IRP-Based IOCTL 和 FSCTL 作業
下列 IRP 型 I/O 作業會使用符合 I/O 控制項程式碼定義中所指定之傳輸類型的緩衝方法, (IOCTL) 或檔案系統控制程式代碼 (FSCTL) :
IRP_MJ_DEVICE_CONTROL
IRP_MJ_FILE_SYSTEM_CONTROL
IRP_MJ_INTERNAL_DEVICE_CONTROL
傳送類型是在CTL_CODE宏的 TransferType 參數中指定。 若要取得指定 IOCTL 或 FSCTL 的傳輸類型,請使用下列宏:
#define METHOD_FROM_CTL_CODE(ctrlCode) ((ULONG)(ctrlCode & 3))
此宏會傳回下列其中一個值:
#define METHOD_BUFFERED 0
#define METHOD_IN_DIRECT 1
#define METHOD_OUT_DIRECT 2
#define METHOD_NEITHER 3
如需CTL_CODE宏的詳細資訊,請參閱 定義 I/O 控制項代碼。
請注意,IRP_MJ_DEVICE_CONTROL也可以是快速 I/O 作業。 當它是快速 I/O 作業時,不論 IOCTL 的傳輸類型為何,它一律不會使用緩衝處理或直接 I/O。 如需何時IRP_MJ_DEVICE_CONTROL可以是快速 I/O 作業的詳細資訊,請參閱 可IRP-Based或快速 I/O 的作業。