mirror of
https://github.com/clinton-hall/nzbToMedia.git
synced 2025-07-30 11:38:30 -07:00
Also updates: - importlib-metadata-0.7 - jaraco-windows - jaraco.classes-1.5 - jaraco.collections-1.6.0 - jaraco.functools-1.20 - jaraco.structures-1.1.2 - jaraco.text-1.10.1 - jaraco.ui-1.6 - more-itertools-4.3.0 - path.py-11.5.0 - six-1.12.0
35 lines
864 B
Python
35 lines
864 B
Python
from __future__ import division
|
|
|
|
import ctypes.wintypes
|
|
|
|
from .error import handle_nonzero_success
|
|
from .api import filesystem
|
|
|
|
|
|
def DeviceIoControl(
|
|
device, io_control_code, in_buffer, out_buffer, overlapped=None):
|
|
if overlapped is not None:
|
|
raise NotImplementedError("overlapped handles not yet supported")
|
|
|
|
if isinstance(out_buffer, int):
|
|
out_buffer = ctypes.create_string_buffer(out_buffer)
|
|
|
|
in_buffer_size = len(in_buffer) if in_buffer is not None else 0
|
|
out_buffer_size = len(out_buffer)
|
|
assert isinstance(out_buffer, ctypes.Array)
|
|
|
|
returned_bytes = ctypes.wintypes.DWORD()
|
|
|
|
res = filesystem.DeviceIoControl(
|
|
device,
|
|
io_control_code,
|
|
in_buffer, in_buffer_size,
|
|
out_buffer, out_buffer_size,
|
|
returned_bytes,
|
|
overlapped,
|
|
)
|
|
|
|
handle_nonzero_success(res)
|
|
handle_nonzero_success(returned_bytes)
|
|
|
|
return out_buffer[:returned_bytes.value]
|