Merge pull request #52 from timminator/fix-infinite-blocking

Fix infinite blocking in VddIoControl in case of a driver crash
This commit is contained in:
Nguyen Duy
2024-07-06 21:45:50 +07:00
committed by GitHub
+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);