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 が 0 の場合は NULL にすることができます。 MTP デバイスでこのメソッドを呼び出すときは、 MTP_COMMAND_DATA_IN 構造体を渡すことができます。
[in] nInBufferSize
入力バッファーのサイズ (バイト単位)。 MTP デバイスでこのメソッドを呼び出すときは、マクロ SIZEOF_REQUIRED_COMMAND_DATA_IN を使用してサイズを指定できます。
[out] lpOutBuffer
呼び出し元によって提供される出力バッファーへのオプションのポインター。 pnOutBufferSize が 0 の値を指している場合は 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 |
Library | Mssachlp.lib |