Voltar à lista
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: NtDeviceIoControlFile

Assinatura

BOOL DeviceIoControl(
    HANDLE hDevice,
    DWORD dwIoControlCode,
    LPVOID lpInBuffer,
    DWORD nInBufferSize,
    LPVOID lpOutBuffer,
    DWORD nOutBufferSize,
    LPDWORD lpBytesReturned,
    LPOVERLAPPED lpOverlapped
);

Parâmetros

ParâmetroTipoDescrição
hDeviceHANDLEHandle do dispositivo, tipicamente obtido com CreateFileW.
dwIoControlCodeDWORDCódigo de controle definido pelo driver.
lpInBufferLPVOIDBuffer de entrada, cujo formato depende do código.
nInBufferSizeDWORDTamanho de `lpInBuffer`.
lpOutBufferLPVOIDBuffer de saída.
nOutBufferSizeDWORDTamanho de `lpOutBuffer`.
lpBytesReturnedLPDWORDRecebe o número de bytes escritos em `lpOutBuffer`.
lpOverlappedLPOVERLAPPEDEstrutura 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