DeviceIoControl(..., FSCTL_LOCK_VOLUME,...); Issue
- 
					
					
					
					
 Ich möchte ein Volume sperren (USB), aber ich erhalte immer eine ERROR_INVALID_HANDLEFehlermeldungHANDLE hDev = CreateFile( "\\\\.\\E:", 0, (FILE_SHARE_READ | FILE_SHARE_WRITE), NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL ); if (hDev == INVALID_HANDLE_VALUE) { cout << "CreateFile() failed!" << endl; cout << "GetLastError(): " << GetLastError() << endl; return -1; } DWORD bytesReturned; OVERLAPPED overlapped; BOOL retDevIoCtrl = DeviceIoControl( hDev, // handle to a volume FSCTL_LOCK_VOLUME, // dwIoControlCode NULL, // lpInBuffer 0, // nInBufferSize NULL, // lpOutBuffer 0, // nOutBufferSize &bytesReturned, // number of bytes returned &overlapped // OVERLAPPED structure ); if (!retDevIoCtrl) { cout << "FSCTL_LOCK_VOLUME failed!" << endl; cout << "GetLastError(): " << GetLastError() << endl;Der Output ist immer " FSCTL_LOCK_VOLUME failed! GetLastError(): 6"Ich habe schon ein paar Variationen der CreateFile Parameter versucht, aber bisher konnte ich keine Lösung finden. Vielleicht kann jemand helfen? Benutze ich die falschen Parameter? So weit ich das erkennen kann, benutze ich sie, wie in der MSDN Dokumentation angegeben. Vielen Dank 
 Nico
 
- 
					
					
					
					
 Schauen wir doch mal nach, was Fehlercode 6 bedeutet... http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382.aspx MSDN schrieb: the handle is invalid aha! 
 
- 
					
					
					
					
 Den Teil, wo du das Event-Handle in der OVERLAPPED-Struktur setzt, hast du weggelassen? 
 
- 
					
					
					
					
 dot schrieb: Schauen wir doch mal nach, was Fehlercode 6 bedeutet... http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382.aspx MSDN schrieb: the handle is invalid aha! Wer lesen kann... Kronos_m schrieb: erhalte immer eine ERROR_INVALID_HANDLE Fehlermeldung Genau das war die Frage, warum ist das Hanle invalid und nicht was Error Code 6 bedeutet! @MFK 
 Danke für den Hinweis! Habe jetzt folgenden Teil dazwischen geschoben:DWORD bytesReturned; OVERLAPPED overlapped; ZeroMemory(&overlapped, sizeof(OVERLAPPED)); HANDLE hEvent = CreateEvent( NULL, FALSE, FALSE, NULL ); if (!hEvent) { cout << "CreateEvent failed!" << endl; cout << "GetLastError(): " << GetLastError() << endl; return -1; } overlapped.hEvent = hEvent;Nun ist der output jedoch: 
 `FSCTL_LOCK_VOLUME failed! GetLastError(): 1 ` 
 Und ja, nur für den Fall der Fälle ich weiß, dass das "Incorrect function" bedeutet, nur warum ich weiß, dass das "Incorrect function" bedeutet, nur warum 
 
- 
					
					
					
					
 Danke noch mal an MFK! Beispiel geht nun! Hab den dwDesiredAccessvonCreateFile()nun noch auf(GENERIC_READ | GENERIC_WRITE)gesetzt: Et voilà!
 
