共用方式為


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 的作業