[Win API] Ustalenie rozmiaru mapowanego pliku.

0

Proces 1 :

 unsigned char*_buf ;
 HANDLE hFileMapp   ;

//        _name - string z nazwą


 unsigned int _size = 4096 ; 

 hFileMapp = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,
                                                     0, _size ,_name);
  if(NULL == hFileMapp)
  {
       _buf = NULL;

  }else{
         _buf =(unsigned char*)MapViewOfFile(hFileMapp,
                                         FILE_MAP_ALL_ACCESS,0,0,0);
       }





Proces 2 :

 unsigned char*_buf ;
 HANDLE hFileMapp   ;

 unsigned int _size ;

//        _name - string z nazwą


    hFileMapp=OpenFileMapping(FILE_MAP_ALL_ACCESS,false,_name);

    if(NULL == hFileMapp)
    {
          _buf = NULL;

    }else{
          _buf=(unsigned char*)MapViewOfFile(hFileMapp,
                                     FILE_MAP_ALL_ACCESS,0,0,0);
         } 

       _size = GetFileSize(hFileMapp,NULL); // <== to Nie działa

W Procesie 1 , tworzę plik mapowany [plik wymiany] ,jego rozmiar
jest znany .

Następnie w innej aplikacji (Proces 2) otwieram poprzednio utworzony plik (OpenFileMapping).
Proces jednak nie posiada informacji o wielkości współdzielonego pliku.

Funkcja GetFileSize zwraca błąd jeśli dostanie HANDLE z funkcji CreateFileMapping
lub OpenFileMapping .

W jaki sposób pobrać rozmiar pliku mapowanego w pamięci w procesie 2 ?
[Pomijam wpisanie do kodu wartości znanej z procesu 1]
[Oraz przesłanie tej wartości poprzez współdzielony plik]

0
PSDK napisał(a)

To obtain the size of a view, use the VirtualQueryEx function

0

A.. no tak , zawracam gitare , starczyło VirtualQuery(.. Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1