IOCTL_MPIO_PASS_THROUGH_PATH_EX IOCTL (ntddscsi.h)
La demande de code de contrôle IOCTL_MPIO_PASS_THROUGH_PATH_EX est la version étendue de la requête IOCTL_MPIO_PASS_THROUGH_PATH. Cette demande prend en charge les transferts de données bidirectionnels et autorise un bloc de données de commande (CDB) > 16 octets.
Ce code de contrôle d’E/S permet à une application ou un pilote de noyau d’envoyer une commande SCSI à un numéro d’unité logique réel désigné. Les restrictions suivantes s’appliquent à l’utilisation de ce code de contrôle d’E/S :
- Si un pilote de classe pour le pseudo LUN existe, l’application doit envoyer la demande à ce pilote de classe. Par conséquent, une application peut envoyer cette requête directement à MPIO uniquement s’il n’existe aucun pilote de classe pour l’appareil.
- Toutes les demandes directes doivent être synchrones.
- Les applications ne nécessitent pas de privilèges d’administration pour envoyer une demande directe à un appareil, mais elles doivent avoir un accès en lecture/écriture à l’appareil.
- La requête comprend une demande directe SCSI (dans une structure de SCSI_PASS_THROUGH_EX incorporée) ainsi que certaines directives.
- La structure directe SCSI doit répondre aux exigences de ce type, comme décrit dans SCSI_PASS_THROUGH_EX.
- Si la demande doit être envoyée via le DSM qui a revendiqué le numéro d’unité logique réelle, cela doit être indiqué. Dans ce cas, le DSM lui-même doit indiquer le même numéro d’unité logique réelle. Sinon, la demande échoue.
- La demande doit spécifier le numéro d’unité logique réel qui est composé de la pseudo-unité logique en termes d’adresse SCSI de l’ancien ou de son MPIOPathId, mais pas les deux.
Code principal
Mémoire tampon d’entrée
Parameters.DeviceIoControl.InputBufferLength indique la taille, en octets, de la mémoire tampon à Irp->AssociatedIrp.SystemBuffer.
Longueur de la mémoire tampon d’entrée
La mémoire tampon doit être au moins taille de(MPIO_PASS_THROUGH_PATH_EX) ou, si elle est envoyée par une application 32 bits dans un système d’exploitation 64 bits, taille de(MPIO_PASS_THROUGH_PATH32_EX).
Mémoire tampon de sortie
Le pilote de port retourne toutes les données de sens des requêtes et toutes les données transférées de l’appareil vers la mémoire tampon à Irp->AssociatedIrp.SystemBuffer.
Longueur de la mémoire tampon de sortie
Les membres SenseInfoLength et DataOutTransferLeng th dans la structure incorporée SCSI_PASS_THROUGH_EX sont mis à jour pour indiquer la quantité de données transférées.
Bloc d’état
Le champ Information est défini sur le nombre d’octets retournés dans la mémoire tampon de sortie à Irp->AssociatedIrp.SystemBuffer. Le champ Status est défini sur STATUS_SUCCESS, ou éventuellement sur STATUS_BUFFER_TOO_SMALL ou STATUS_INVALID_PARAMETER si la valeur Length d’entrée dans le SCSI_PASS_THROUGH_EX incorporé est incorrectement définie.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | ntddscsi.h (include Ntddscsi.h) |