Partager via


IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT IOCTL (ntdddscsi.h)

Ce code de contrôle d’E/S permet à une application ou un pilote 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 :

  • 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 à un 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_DIRECT 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_DIRECT.
  • 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

IRP_MJ_DEVICE_CONTROL

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) 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).

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 SenseInfoLength et DataTransferLength dans la structure de SCSI_PASS_THROUGH_DIRECT incorporée sont mises à 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_DIRECT incorporé est incorrectement définie.

Exigences

Exigence Valeur
d’en-tête ntddscsi.h (include Ntddscsi.h)

Voir aussi

MPIO_PASS_THROUGH_PATH_DIRECT

SCSI_PASS_THROUGH_DIRECT