> For the complete documentation index, see [llms.txt](https://www.pinvoke.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.pinvoke.dev/kernel32/deviceiocontrol.md).

# DeviceIoControl

```csharp
[DllImport("KERNEL32.dll", ExactSpelling = true, SetLastError = true)]
[DefaultDllImportSearchPaths(DllImportSearchPath.System32)]
public static extern unsafe BOOL DeviceIoControl(
    HANDLE hDevice,
    uint dwIoControlCode,
    [Optional] void* lpInBuffer,
    uint nInBufferSize,
    [Optional] void* lpOutBuffer,
    uint nOutBufferSize,
    [Optional] uint* lpBytesReturned,
    [Optional] NativeOverlapped* lpOverlapped);
```
