Partager via


IRP-Based opérations IOCTL et FSCTL

Les opérations d’E/S basées sur IRP suivantes utilisent la méthode de mise en mémoire tampon qui correspond au type de transfert spécifié dans la définition du code de contrôle d’E/S (IOCTL) ou du code de contrôle du système de fichiers (FSCTL) :

  • IRP_MJ_DEVICE_CONTROL

  • IRP_MJ_FILE_SYSTEM_CONTROL

  • IRP_MJ_INTERNAL_DEVICE_CONTROL

Le type de transfert est spécifié dans le paramètre TransferType de la macro CTL_CODE. Pour obtenir le type de transfert d’un IOCTL ou d’un FSCTL donné, utilisez la macro suivante :

#define METHOD_FROM_CTL_CODE(ctrlCode)         ((ULONG)(ctrlCode & 3))

Cette macro retourne l’une des valeurs suivantes :

#define METHOD_BUFFERED                 0
#define METHOD_IN_DIRECT                1
#define METHOD_OUT_DIRECT               2
#define METHOD_NEITHER                  3

Pour plus d’informations sur la macro CTL_CODE, consultez Définition des codes de contrôle d’E/S.

Notez que IRP_MJ_DEVICE_CONTROL peut également être une opération d’E/S rapide. Lorsqu’il s’agit d’une opération d’E/S rapide, elle n’utilise toujours ni e/S tamponnée ni directe, quel que soit le type de transfert de IOCTL. Pour plus d’informations sur le moment où IRP_MJ_DEVICE_CONTROL peut être une opération d’E/S rapide, consultez Opérations qui peuvent être IRP-Based ou E/S rapides.