Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os IOCTLs (códigos de controle de E/S) são usados para comunicação entre aplicativos e drivers no modo de usuário ou para comunicação interna entre drivers em uma pilha. Os códigos de controle de E/S são enviados usando IRPs.
Aplicativos no modo de usuário enviam IOCTLs para drivers chamando DeviceIoControl, que é descrito na documentação do SDK do Microsoft Windows. As chamadas para DeviceIoControl fazem com que o gerente de E/S crie uma solicitação de IRP_MJ_DEVICE_CONTROL e envie-a para o driver mais alto.
Além disso, drivers de nível superior podem enviar IOCTLs para drivers de nível inferior, criando e enviando solicitações de IRP_MJ_DEVICE_CONTROL ou IRP_MJ_INTERNAL_DEVICE_CONTROL. Os drivers processam essas solicitações nas rotinas DispatchDeviceControl e DispatchInternalDeviceControl . (Os aplicativos no modo de usuário não podem enviar solicitações de IRP_MJ_INTERNAL_DEVICE_CONTROL .)
Alguns IOCTLs são públicos e outros são privados. Os IOCTLs públicos normalmente são definidos pelo sistema e documentados pela Microsoft, no WDK (Windows Driver Kit) ou no SDK do Windows. Eles podem ser enviados com chamadas de um componente em modo de usuário para DeviceIoControl ou podem ser enviados de um driver em modo kernel para outro, usando solicitações IRP_MJ_DEVICE_CONTROL ou IRP_MJ_INTERNAL_DEVICE_CONTROL.
Os IOCTLs privados, por outro lado, devem ser usados exclusivamente pelos componentes de software de um fornecedor para se comunicarem entre si. Os IOCTLs privados normalmente são definidos em um arquivo de cabeçalho fornecido pelo fornecedor e não são documentados publicamente. Assim como os IOCTLs públicos, eles podem ser enviados com chamadas de um componente de modo de usuário para DeviceIoControl ou podem ser enviados de um driver de modo kernel para outro usando solicitações IRP_MJ_DEVICE_CONTROL ou IRP_MJ_INTERNAL_DEVICE_CONTROL.
Não há diferença entre a codificação de IOCTLs públicos e privados. No entanto, há diferenças nos códigos internos que podem ser usados em IOCTLs definidos pelo fornecedor, em comparação com aqueles que são usados para IOCTLs definidos pelo sistema. Se os IOCTLs públicos disponíveis não atenderem às suas necessidades, você poderá definir novos IOCTLs privados que seus componentes de software podem usar para se comunicar uns com os outros. Para obter mais informações, consulte Definindo códigos de controle de E/S.