IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT IOCTL (parallel.h)
La requête IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT connecte une routine de service d’interruption facultative et une vérification de port différée routine à un port parallèle. Seuls les pilotes en mode noyau peuvent utiliser cette requête.
La demande d’interruption de connexion retourne des informations que le pilote peut utiliser dans le contexte d’un ISR spécifique au pilote. Les informations incluent un pointeur vers l’objet d’interruption et des pointeurs vers des routines de rappel qui allouent et libèrent le port parallèle à IRQL = DIRQL.
Code principal
IRP_MJ_INTERNAL_DEVICE_CONTROL
Mémoire tampon d’entrée
Le membre AssociatedIrp.SystemBuffer pointe vers une structure PARALLEL_INTERRUPT_SERVICE_ROUTINE que le client alloue aux informations du service d’interruption d’entrée. Le pilote de fonction fourni par le système pour les ports parallèles utilise la même mémoire tampon, mais le convertit en un autre type de données pour générer des informations.
Longueur de la mémoire tampon d’entrée
Le membre Parameters.DeviceIoControl.InputBufferLength est défini sur la taille, en octets, d’une structure PARALLEL_INTERRUPT_SERVICE_ROUTINE.
Mémoire tampon de sortie
Le membre AssociatedIrp.SystemBuffer pointe vers une structure PARALLEL_INTERRUPT_INFORMATION utilisée par le pilote de fonction de port parallèle pour générer des informations d’interruption parallèles.
Longueur de la mémoire tampon de sortie
Le membre Parameters.DeviceIoControl.OutputBufferLength est défini sur la taille, en octets, d’une structure PARALLEL_INTERRUPT_INFORMATION.
Bloc d’état
Si la requête réussit, le membre d’informations est défini sur la taille, en octets, d’une structure PARALLEL_INTERRUPT_INFORMATION. Dans le cas contraire, le membre Information est défini sur zéro.
Le membre Status est défini sur l’une des valeurs d’état génériques retournées par les demandes de contrôle d’appareil interne pour les ports parallèles ou l’une des valeurs suivantes :
STATUS_BUFFER_TOO_SMALL
Au moins l’un des éléments suivants est vrai :
La valeur du membre Parameters.DeviceIoControl.InputBufferLength est inférieure à la taille, en octets, d’une structure PARALLEL_INTERRUPT_SERVICE_ROUTINE.
La valeur du membre Parameters.DeviceIoControl.OuputBufferLength est inférieure à la taille, en octets, d’une structure PARALLEL_INTERRUPT_INFORMATION.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | parallel.h (include Parallel.h) |
Voir aussi
PARALLEL_INTERRUPT_SERVICE_ROUTINE