Share via


IOCTL_MPIO_PASS_THROUGH_PATH IOCTL (ntddscsi.h)

Ce code de contrôle d’E/S permet à un pilote d’application ou de noyau d’envoyer une commande SCSI à un LUN réel désigné. Les restrictions suivantes s’appliquent à l’utilisation de ce code de contrôle d’E/S :

  • S’il existe un pilote de classe pour la pseudo LUN, l’application doit envoyer la demande à ce pilote de classe. Ainsi, une application ne peut envoyer cette demande directement à MPIO que s’il n’existe aucun pilote de classe pour l’appareil.
  • Toutes les demandes directes doivent être synchrones.
  • Les applications n’ont pas besoin de privilèges administratifs pour envoyer une demande directe à un appareil, mais elles doivent disposer d’un accès en lecture/écriture à l’appareil.
  • La requête comprend une demande directe SCSI (dans une structure de SCSI_PASS_THROUGH 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.
  • Si la demande doit être envoyée via le DSM qui a revendiqué la LUN réelle, cela doit être indiqué. Dans ce cas, le DSM lui-même doit indiquer la même LUN réelle. Sinon, la demande échouera.
  • La demande doit spécifier la LUN réelle qui est composée par la pseudo LUN en termes d’adresse SCSI de la première ou de son chemin d’accès MPIO, mais pas les deux.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

Parameters.DeviceIoControl.InputBufferLength indique la taille, en octets, de la mémoire tampon sur Irp-AssociatedIrp.SystemBuffer>.

Longueur de la mémoire tampon d’entrée

La mémoire tampon doit être au moins sizeof(MPIO_PASS_THROUGH_PATH) ou, si elle est envoyée par une application 32 bits dans un système d’exploitation 64 bits, sizeof(MPIO_PASS_THROUGH_PATH32).

Mémoire tampon de sortie

Le pilote de port retourne toutes les données d’sens de requête et toutes les données transférées de l’appareil vers la mémoire tampon sur Irp-AssociatedIrp.SystemBuffer>.

Longueur de la mémoire tampon de sortie

Les membres SenseInfoLength et DataTransferLength de la structure incorporée SCSI_PASS_THROUGH sont mis à jour pour indiquer la quantité de données transférées.

Bloc d’état

Le champ Informations est défini sur le nombre d’octets retournés dans la mémoire tampon de sortie sur Irp-AssociatedIrp.SystemBuffer>. Le champ État est défini sur STATUS_SUCCESS, ou éventuellement sur STATUS_BUFFER_TOO_SMALL ou STATUS_INVALID_PARAMETER si la valeur d’entrée Length dans le SCSI_PASS_THROUGH incorporé n’est pas définie de manière incorrecte.

Configuration requise

Condition requise Valeur
En-tête ntddscsi.h (inclure Ntddscsi.h)

Voir aussi

MPIO_PASS_THROUGH_PATH

SCSI_PASS_THROUGH