Fix infinite blocking in case of a driver crash

This commit is contained in:
Tim Lodemann
2024-07-04 01:13:41 +02:00
parent 6df9e86772
commit 06cef41f5e
+6 -2
View File
@@ -279,10 +279,14 @@ static DWORD VddIoControl(HANDLE vdd, VddCtlCode code, const void *data, size_t
if (data != NULL && size > 0)
memcpy(InBuffer, data, (size < sizeof(InBuffer)) ? size : sizeof(InBuffer));
Overlapped.hEvent = CreateEventA(NULL, FALSE, FALSE, NULL);
Overlapped.hEvent = CreateEventA(NULL, TRUE, FALSE, NULL);
DeviceIoControl(vdd, (DWORD)code, InBuffer, sizeof(InBuffer), &OutBuffer, sizeof(DWORD), NULL, &Overlapped);
GetOverlappedResult(vdd, &Overlapped, &NumberOfBytesTransferred, TRUE);
if (!GetOverlappedResultEx(vdd, &Overlapped, &NumberOfBytesTransferred, 5000, FALSE))
{
CloseHandle(Overlapped.hEvent);
return 0;
}
if (Overlapped.hEvent != NULL)
CloseHandle(Overlapped.hEvent);