Bugs item #1380832, was opened at 2005-12-15 08:13
Message generated for change (Comment added) made by mhammond
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=551954&aid=1380832&group_id=78018
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: win32
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Siggi (sigurasg)
Assigned to: Nobody/Anonymous (nobody)
Summary: win32file.DeviceIoControl can't do OVERLAPPED with output
Initial Comment:
In the case where win32file.DeviceIoControl is called
on an async IOCTL with output, and an OVERLAPPED
structure is called,
it'll do the wrong thing.
In this case win32 function will return FALSE, and
::GetLastError will return ERROR_IO_PENDING.
In this case it's the caller's responsibility to keep
the output buffer (readData) around until the IO
completes or is cancelled, but the code below
deallocates it.
ok = DeviceIoControl(hDevice,
dwIoControlCode,
writeData,
writeSize,
readData,
readSize,
&numRead,
pOverlapped);
Py_END_ALLOW_THREADS
if (!ok) {
free(readData);
return PyWin_SetAPIError("DeviceIoControl");
}
Also, given the current interface, there's no way to
retrieve the output of an overlapped IOCTL. This'd
require much the same output convention as
win32file.ReadFile.
----------------------------------------------------------------------
>Comment By: Mark Hammond (mhammond)
Date: 2005-12-15 09:12
Message:
Logged In: YES
user_id=14198
That sounds correct. Patches gratefully accepted (or even
just something I could add to the test suite!)
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=551954&aid=1380832&group_id=78018
|