共用方式為


IRP_MJ_DEVICE_CONTROL

裝置物件屬於特定裝置類型的每個驅動程式 (請參閱 指定裝置類型) ,才能在 DispatchDeviceControl 常式中支援此要求,如果類型有一組系統定義的 I/O 控制代碼 (IOCTLs) 存在。 如需 IOCTL 的詳細資訊,請參閱 I/O 控制程式碼簡介

較高層級的驅動程式通常會將這些要求傳遞至基礎設備磁碟機。 系統會假設驅動程式堆疊中的每個裝置驅動程式都支援此要求,以及一組裝置類型特定的公用或私人 IOCTL。 如需特定裝置類型 IOCTL 的詳細資訊,請參閱 Microsoft Windows 驅動程式套件 (WDK) 中的裝置類型特定檔。

傳送時

在成功完成建立要求之後,隨時執行。

輸入參數

I/O 控制項程式碼包含在驅動程式 I/O 堆疊位置的 Parameters.DeviceIoControl.IoControlCode 中。

其他輸入參數取決於 I/O 控制項程式碼的值。 如需詳細資訊,請參閱 I/O 控制項代碼的緩衝區描述

輸出參數

輸出參數取決於 I/O 控制項程式碼的值。 如需詳細資訊,請參閱 I/O 控制項代碼的緩衝區描述

作業

驅動程式會收到此 I/O 控制程式碼,因為使用者模式執行緒已呼叫 Microsoft Win32 DeviceIoControl 函式,或較高層級的核心模式驅動程式已設定要求。 使用者模式驅動程式可能稱為 DeviceIoControl,傳入驅動程式定義的 (也稱為 私人) I/O 控制程式碼,以要求來自緊密結合核心模式裝置驅動程式的裝置或驅動程式特定支援。

在收到裝置 I/O 控制要求時,較高層級的驅動程式通常會將 IRP 傳遞至下一個較低的驅動程式。 不過,此做法有一些例外狀況。 例如,已儲存從基礎埠驅動程式取得之組態資訊的類別驅動程式,可能會完成某些IOCTL_XXX 要求,而不需將 IRP 向下傳遞至對應的埠驅動程式。

在收到裝置 I/O 控制要求時,設備磁碟機會檢查 I/O 控制程式碼,以判斷如何滿足要求。 對於大部分的公用 I/O 控制程式碼,設備磁碟機會將少量資料傳送至 Irp-AssociatedIrp.SystemBuffer >或從緩衝區傳輸。

如需 IRP_MJ_DEVICE_CONTROLIRP_MJ_INTERNAL_DEVICE_CONTROL 要求的 I/O 控制程式碼的一般資訊,請參閱 使用 I/O 控制代碼。 另請參閱 裝置Type-Specific I/O 要求

規格需求

標頭

Wdm.h (包括 Wdm.h、Ntddk.h 或 Ntifs.h)

另請參閱

DispatchDeviceControl