Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
I/O-besturingscodes (IOCTL's) worden gebruikt voor communicatie tussen toepassingen en stuurprogramma's in de gebruikersmodus, of voor communicatie intern tussen stuurprogramma's in een stack. I/O-besturingscodes worden verzonden met IRP's.
Toepassingen in de gebruikersmodus verzenden IOCTL's naar stuurprogramma's door DeviceIoControl aan te roepen. Deze wordt beschreven in de Microsoft Windows SDK-documentatie. Aanroepen naar DeviceIoControl zorgen ervoor dat de I/O-manager een IRP_MJ_DEVICE_CONTROL aanvraag maakt en naar het bovenste stuurprogramma verzendt.
Daarnaast kunnen stuurprogramma's op het hoogste niveau IOCTL's verzenden naar stuurprogramma's op lager niveau door IRP_MJ_DEVICE_CONTROL of IRP_MJ_INTERNAL_DEVICE_CONTROL aanvragen te maken en te verzenden. Stuurprogramma's verwerken deze aanvragen in de routines DispatchDeviceControl en DispatchInternalDeviceControl. (Toepassingen in de gebruikersmodus kunnen geen IRP_MJ_INTERNAL_DEVICE_CONTROL aanvragen verzenden.)
Sommige IOCTL's zijn openbaar en sommige zijn privé. Openbare IOCTL's zijn doorgaans door het systeem gedefinieerd en gedocumenteerd door Microsoft, in de Windows Driver Kit (WDK) of de Windows SDK. Ze kunnen worden verzonden met de aanroepen van een gebruikersmodusonderdeel naar DeviceIoControl, of ze worden mogelijk verzonden van het ene stuurprogramma in de kernelmodus naar het andere, met behulp van IRP_MJ_DEVICE_CONTROL - of IRP_MJ_INTERNAL_DEVICE_CONTROL-aanvragen .
Privé-IOCTL's zijn daarentegen bedoeld om uitsluitend te worden gebruikt door softwareonderdelen van een leverancier om met elkaar te communiceren. Privé-IOCTL's worden doorgaans gedefinieerd in een door de leverancier opgegeven headerbestand en worden niet openbaar gedocumenteerd. Net als openbare IOCTL's worden ze mogelijk verzonden met de aanroepen van een gebruikersmodusonderdeel naar DeviceIoControl, of worden ze mogelijk vanaf het ene stuurprogramma in de kernelmodus naar het andere verzonden met behulp van IRP_MJ_DEVICE_CONTROL - of IRP_MJ_INTERNAL_DEVICE_CONTROL-aanvragen .
Er is geen verschil tussen het coderen van openbare en privé-IOCTL's. Er zijn echter verschillen in de interne codes die kunnen worden gebruikt in door de leverancier gedefinieerde IOCTL's, vergeleken met de codes die worden gebruikt voor door het systeem gedefinieerde IOCTL's. Als de beschikbare openbare IOCTL's niet aan uw behoeften voldoen, kunt u nieuwe privé-IOCTL's definiëren die uw softwareonderdelen kunnen gebruiken om met elkaar te communiceren. Zie I/O-besturingscodes definiërenvoor meer informatie.