DeviceIoControl function kernel32

Win32Result<bool> DeviceIoControl(
  1. HANDLE hDevice,
  2. int dwIoControlCode,
  3. Pointer<NativeType>? lpInBuffer,
  4. int nInBufferSize,
  5. Pointer<NativeType>? lpOutBuffer,
  6. int nOutBufferSize,
  7. Pointer<Uint32>? lpBytesReturned,
  8. Pointer<OVERLAPPED>? lpOverlapped,
)

Sends a control code directly to a specified device driver, causing the corresponding device to perform the corresponding operation.

To learn more, see learn.microsoft.com/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol.

Implementation

Win32Result<bool> DeviceIoControl(
  HANDLE hDevice,
  int dwIoControlCode,
  Pointer? lpInBuffer,
  int nInBufferSize,
  Pointer? lpOutBuffer,
  int nOutBufferSize,
  Pointer<Uint32>? lpBytesReturned,
  Pointer<OVERLAPPED>? lpOverlapped,
) {
  final result_ = DeviceIoControl_Wrapper(
    hDevice,
    dwIoControlCode,
    lpInBuffer ?? nullptr,
    nInBufferSize,
    lpOutBuffer ?? nullptr,
    nOutBufferSize,
    lpBytesReturned ?? nullptr,
    lpOverlapped ?? nullptr,
  );
  return .new(value: result_.value.i32 != FALSE, error: result_.error);
}