Ho un'applicazione che ha una zona di memoria condivisa definita con CreateFileMapping
e sto provando a leggere quella memoria da un'altra applicazione.Perché CreateFileMapping restituisce "il file esiste già"?
ho provato questo:
handle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE,
0,$3200, pchar('FileMappingZone'));
Ma ottengo:
Impossibile creare un file quando il file esiste già
quello che potrebbe essere il problema?
Il tuo wrapper attorno a winapi chiama incondizionatamente 'GetLastError' dopo ogni chiamata? È previsto per 'CreateFileMapping' per restituire un handle valido ** e ** per il seguente' GetLastError' per restituire 'ERROR_ALREADY_EXISTS' (che in realtà non è un errore se è quello che ci si aspetta). –
Ho chiamato GetLastError subito dopo la chiamata su CreateFileMapping, se chiudo l'applicazione che ha creato il mapping file prima che venga indicato: Operazione completata correttamente – opc0de
@ opc0de Non farlo. Chiama solo "GetLastError" quando la documentazione dice di farlo. E questo è quando 'CreateFileMapping' restituisce' NULL'. –