IWMDMDevice3::D eviceIoControl 方法 (mswmdm.h)
DeviceIoControl方法會將裝置 I/O 控制項 (IOCTL) 程式碼傳送至裝置。 這是傳遞方法;Windows Media 裝置管理員只會在驗證參數之後將呼叫轉送到服務提供者。
語法
HRESULT DeviceIoControl(
[in] DWORD dwIoControlCode,
[in] BYTE *lpInBuffer,
[in] DWORD nInBufferSize,
[out] BYTE *lpOutBuffer,
[in, out] LPDWORD pnOutBufferSize
);
參數
[in] dwIoControlCode
控制要傳送至裝置的程式碼。 在 MTP 裝置上呼叫此方法時,請使用 SDK 隨附于 MtpExt.h 中定義的值IOCTL_MTP_CUSTOM_COMMAND。
[in] lpInBuffer
呼叫端所提供的輸入緩衝區選擇性指標。 如果nInBufferSize為零,它可以是Null。 在 MTP 裝置上呼叫此方法時,您可以傳入 MTP_COMMAND_DATA_IN 結構。
[in] nInBufferSize
輸入緩衝區的大小,以位元組為單位。 在 MTP 裝置上呼叫此方法時,您可以使用宏 SIZEOF_REQUIRED_COMMAND_DATA_IN 來指定大小。
[out] lpOutBuffer
呼叫端所提供的輸出緩衝區選擇性指標。 如果pnOutBufferSize指向零的值,它可以是Null。 在 MTP 裝置上呼叫此方法時,您可以傳入 MTP_COMMAND_DATA_OUT 結構。
[in, out] pnOutBufferSize
輸出緩衝區的大小,以位元組為單位。 當呼叫傳回時,它會指定實際傳回的位元組數目。 在 MTP 裝置上呼叫此方法時,您可以使用 MtpExt.h 中定義的宏 SIZEOF_REQUIRED_COMMAND_DATA_OUT 來指定大小。此參數不可為 Null。
傳回值
方法會傳回 HRESULT。 Windows Media 中的所有介面方法裝置管理員都可以傳回下列任何錯誤碼類別:
- 標準 COM 錯誤碼
- 轉換成 HRESULT 值的 Windows 錯誤碼
- Windows Media 裝置管理員錯誤碼
備註
此方法提供應用程式與服務提供者之間的私人通訊模式。 服務提供者接著可以處理此 IOCTL、選擇性地修改它,並將它傳遞至核心模式驅動程式。
相較于 IWMDMDevice::SendOpaqueCommand,這個方法較適合 DeviceIoControl Windows API,因為呼叫端會提供輸出緩衝區。 此外,不同于 IWMDMDevice::SendOpaqueCommand,此方法不會涉及任何 MAC 檢查,而且更有效率。
例如,這個方法可用來將自訂媒體傳輸通訊協定 (MTP) 命令傳送至 MTP 裝置。
需求
目標平台 | Windows |
標頭 | mswmdm.h |
程式庫 | Mssachlp.lib |