Problema scrittura RAW su disco USB

di il
0 risposte

Problema scrittura RAW su disco USB

Ho uno strano problema quando scrivo un singolo settore su un drive USB

Queste sono le funzioni che uso (ovviamente semplificate)

Lettura di un singolo settore (questa funziona corrrettamente)
 hDevice := CreateFile(PChar('\\.\G:'),
                       GENERIC_READ,
                       FILE_SHARE_READ or FILE_SHARE_WRITE,
                       nil,
                       OPEN_EXISTING,
                       0,
                       0);

 If hDevice <> INVALID_HANDLE_VALUE Then
    If SetFilePointerEx(hDevice, 10*512, nil, FILE_BEGIN) Then
       begin
         ReadFile(hDevice, Data[1], 512, BytesRead, nil);
       end;
Scrittura di un singolo settore (qui' avviene l'errore)
 hDevice := CreateFile(PChar('\\.\G:'),
                       GENERIC_WRITE,
                       FILE_SHARE_READ or FILE_SHARE_WRITE,
                       nil,
                       OPEN_EXISTING,
                       FILE_ATTRIBUTE_NORMAL,
                       0);
 If hDevice <> INVALID_HANDLE_VALUE Then
    If SetFilePointerEx(hDevice, 10*512, nil, FILE_BEGIN) Then
       begin
         WriteFile(hDevice, Data[1], 512, BytesWrite, nil);
       end;

Praticamente WriteFile ritorna sempre con errore 5 (accesso negato). Tenete presente che il programma lavora con i permessi di amministratore,ho provato ad utilizzare la funzione DeviceIoControl con parametyro FSCTL_LOCK_VOLUME in maniera da bloccare il disco, ho provato ad eseguire la funzione DeleteVolumeMountPoint per smontare l'USB e lavorare con il nome fisico dell'unità ma nulla.

Quindi, per concludere

Il programma è un 32bit
CreateFile funziona perfettamente
SetFilePointerEx funziona perfettamente
ReadFile funziona perfettamente
WriteFile mi da sempre l'errore 5 (access denied) ma solo su Windows 10 e Windows 11

Qualche idea?

Grazie

Devi accedere o registrarti per scrivere nel forum
0 risposte