IRP_MJ_DEVICE_CONTROL

Chaque pilote dont les objets d’appareil appartiennent à un type d’appareil particulier (consultez spécification des types de périphérique) est requis pour prendre en charge cette requête dans une routine DispatchDeviceControl , si un ensemble de codes de contrôle d’e/s définis par le système (IOCTL) existe pour le type. Pour plus d’informations sur les IOCTL, consultez Présentation des codes de contrôle d’e/s.

Les pilotes de niveau supérieur transmettent généralement ces requêtes à un pilote de périphérique sous-jacent. Chaque pilote de périphérique dans une pile de pilotes est supposé prendre en charge cette demande, ainsi qu’un ensemble d’IOCTL, public ou privé, spécifique à un type d’appareil. pour plus d’informations sur les ioctl pour des types d’appareils spécifiques, consultez la documentation spécifique au type d’appareil dans le Kit de pilote de Windows Microsoft (WDK).

Date d’envoi

À tout moment après l’aboutissement d’une demande de création.

Paramètres d’entrée

Le code de contrôle d’e/s est contenu dans Parameters. DeviceIoControl. IoControlCode dans l’emplacement de la pile d’e/s du pilote de l’IRP.

D’autres paramètres d’entrée dépendent de la valeur du code de contrôle d’e/s. Pour plus d’informations, consultez descriptions des mémoires tampons pour les codes de contrôle d’e/s.

Paramètres de sortie

Les paramètres de sortie dépendent de la valeur du code de contrôle d’e/s. Pour plus d’informations, consultez descriptions des mémoires tampons pour les codes de contrôle d’e/s.

Opération

Un pilote reçoit ce code de contrôle d’e/s, car le thread en mode utilisateur a appelé la fonction DeviceIoControl de Microsoft Win32, ou un pilote de mode noyau de niveau supérieur a configuré la demande. Éventuellement, un pilote en mode utilisateur a appelé DeviceIoControl, en passant un code de contrôle d’e/s (également appelé privé) défini par le pilote pour demander une prise en charge spécifique de l’appareil ou du pilote à un pilote de périphérique en mode noyau étroitement couplé.

À la réception d’une demande de contrôle d’e/s de périphérique, un pilote de niveau supérieur transmet généralement l’IRP au pilote inférieur suivant. Toutefois, il existe quelques exceptions à cette pratique. Par exemple, un pilote de classe qui contient des informations de configuration stockées obtenues à partir du pilote de port sous-jacent peut effectuer certaines demandes IOCTL_xxx sans passer l’IRP au pilote de port correspondant.

À la réception d’une demande de contrôle d’e/s de périphérique, un pilote de périphérique examine le code de contrôle d’e/s pour déterminer comment répondre à la demande. Pour la plupart des codes de contrôle d’e/s publics, les pilotes de périphérique transfèrent une petite quantité de données vers ou à partir de la mémoire tampon à l’adresse IRP- > AssociatedIrp. SystemBuffer.

Pour obtenir des informations générales sur les codes de contrôle d’e/s pour les demandes de IRP_MJ_DEVICE_CONTROL ou de IRP_MJ_INTERNAL_DEVICE_CONTROL , consultez utilisation des codes de contrôle d’e/s. Voir aussi demandes d’e/s de l’appareil Type-Specific.

Configuration requise

En-tête

WDM. h (inclure WDM. h, Ntddk. h ou Ntifs. h)

Voir aussi

DispatchDeviceControl