次の方法で共有


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

関連項目

IWMDMDevice3 インターフェイス

IWMDMDevice::SendOpaqueCommand