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.