Windows Win32Dispositivos & volumeskernel32.dll
DeviceIoControl
Envia um código de controle específico de dispositivo a um driver, opcionalmente trocando dados de entrada/saída.
Descrição
Equivalente direto do `ioctl` do Linux: um único ponto de entrada multiplexado por IOCTL code (IOCTL_*) cujo significado é definido inteiramente pelo driver alvo.
Header:
ioapiset.hDLL: kernel32.dllNative API: NtDeviceIoControlFileAssinatura
BOOL DeviceIoControl(
HANDLE hDevice,
DWORD dwIoControlCode,
LPVOID lpInBuffer,
DWORD nInBufferSize,
LPVOID lpOutBuffer,
DWORD nOutBufferSize,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| hDevice | HANDLE | Handle do dispositivo, tipicamente obtido com CreateFileW. |
| dwIoControlCode | DWORD | Código de controle definido pelo driver. |
| lpInBuffer | LPVOID | Buffer de entrada, cujo formato depende do código. |
| nInBufferSize | DWORD | Tamanho de `lpInBuffer`. |
| lpOutBuffer | LPVOID | Buffer de saída. |
| nOutBufferSize | DWORD | Tamanho de `lpOutBuffer`. |
| lpBytesReturned | LPDWORD | Recebe o número de bytes escritos em `lpOutBuffer`. |
| lpOverlapped | LPOVERLAPPED | Estrutura para operação assíncrona, ou NULL. |
Valor de retorno
Diferente de zero em sucesso; 0 em erro (consulte GetLastError).
Códigos de erro (GetLastError)
- ERROR_INVALID_HANDLE(6)
- O identificador (handle) informado é inválido.
- ERROR_NOT_SUPPORTED(50)
- O pedido não é suportado.
- ERROR_INSUFFICIENT_BUFFER(122)
- O buffer de dados é pequeno demais.
Relacionadas
Equivalente em Linux x86_64