énumération SPB_TRANSFER_DIRECTION (spb.h)
L’énumération SPB_TRANSFER_DIRECTION décrit la direction (lecture ou écriture) d’un transfert unique dans une séquence de transfert d’E/S.
Syntax
typedef enum SPB_TRANSFER_DIRECTION {
SpbTransferDirectionNone,
SpbTransferDirectionFromDevice,
SpbTransferDirectionToDevice,
SpbTransferDirectionMax
} *PSPB_TRANSFER_DIRECTION;
Constantes
SpbTransferDirectionNone La direction du transfert des données n’est pas définie. |
SpbTransferDirectionFromDevice Le sens du transfert des données est de l’appareil à la mémoire système (lecture à partir de l’appareil). |
SpbTransferDirectionToDevice La direction du transfert des données va de la mémoire système à l’appareil (écriture sur l’appareil). |
SpbTransferDirectionMax Réservé à l’utilisation par le système d’exploitation. |
Remarques
Les valeurs de cette énumération indiquent le sens des transferts individuels dans une séquence de transfert d’E/S. La mémoire tampon d’entrée d’une demande de contrôle d’E /S IOCTL_SPB_EXECUTE_SEQUENCE est une structure SPB_TRANSFER_LIST qui spécifie une liste de transferts pour la séquence. Chaque transfert est décrit par une structure SPB_TRANSFER_LIST_ENTRY qui contient les paramètres de transfert, notamment la direction du transfert. La direction de transfert est SpbTransferDirectionFromDevice pour une opération de lecture, et est SpbTransferDirectionToDevice pour une opération d’écriture.
Votre pilote de contrôleur SPB peut appeler la méthode SpbRequestGetParameters pour récupérer un ensemble de paramètres spécifiques À SPB à partir d’une demande d’E/S. L’un de ces paramètres est une valeur d’énumération SPB_TRANSFER_DIRECTION qui indique la direction de transfert de la demande d’E/S précédente. Le pilote du contrôleur SPB peut utiliser cette valeur de direction pour déterminer si la demande de lecture ou d’écriture (IRP_MJ_READ ou IRP_MJ_WRITE) actuelle nécessite une modification de la direction de transfert sur le bus.
En outre, SpbRequestGetParameters récupère une valeur de position qui indique la position relative d’une demande de lecture ou d’écriture dans la liste des transferts pour la séquence de plusieurs requêtes. Si une demande de lecture ou une demande d’écriture a une valeur de position de SpbRequestSequencePositionSingle ou SpbRequestSequencePositionFirst, la valeur de direction du transfert précédent est SpbTransferDirectionNone (autrement dit, il n’y a pas de sens de transfert précédent). Pour une demande de lecture ou d’écriture dont la valeur de position est SpbRequestSequencePositionMiddle ou SpbRequestSequencePositionLast, la valeur de direction indique si le transfert précédent était une lecture ou une écriture. Pour une requête de déverrouillage (IOCTL_SPB_UNLOCK_CONTROLLER), dont la valeur de position est SpbRequestSequencePositionLast, la valeur de direction indique si le dernier transfert de la séquence était une lecture ou une écriture.
Une requête de verrou (IOCTL_SPB_LOCK_CONTROLLER) n’a pas de direction précédente. De même, une demande de contrôle d’E/S passée à la fonction de rappel EvtSpbControllerIoOther n’a pas de direction précédente. Pour l’une de ces requêtes, la valeur de direction précédente récupérée par SpbRequestGetParameters est SpbTransferDirectionNone.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge à partir de Windows 8. |
En-tête | spb.h |