次の方法で共有


アーキテクチャの概要

WPD アーキテクチャは、3 つのプロセスに分けることができます。 これらのプロセス内には、WPD の 3 つの主要コンポーネント (API、シリアライザー、ドライバー) があります。 次の図は、WPD アーキテクチャを構成するプロセスとコンポーネントを示しています。

illustration showing api, serializer, and driver components of wpd

WPD アプリケーション プログラミング インターフェイス

WPD API は、インプロセス COM サーバーとして実装されます。 この API では、標準の Microsoft Win32 API を使用して、適切な WPD ドライバーと通信します。 WPD シリアライザーと呼ばれるコンポーネントは、API オブジェクトとドライバーの両方で、Driver Foundation (WDF)-User-Mode Driver Framework (UMDF) バッファーとの間 Windowsでパラメーターをパックまたはアンパックするために使用されます。

WPD シリアライザー

WPD シリアライザーは、インプロセス COM サーバーとして実装されます。 WPD API は、シリアライザーを使用して、ドライバーに送信されるメッセージ バッファーにコマンドとパラメーターをパックします。 ドライバーは、シリアライザーを使用して、処理のためにこれらのメッセージ バッファーをアンパックします。 また、ドライバーはシリアライザーを使用して、WPD API に返される応答バッファーにデータとパラメーターをパックし、WPD API はシリアライザーを使用してこれらの応答バッファーをアンパックして呼び出し元に返します。

WPD ドライバー

WPD ドライバーは、標準の Windows Driver Foundation (WDF)-User-Mode Driver Framework (UMDF) ドライバーとして実装されます。 WPD ドライバーは、ドライバー ホストと呼ばれる別のプロセスで UMDF によってホストされます。

ドライバーは UMDF リフレクタからメッセージを受信します (バッファーの受信方法はドライバーにとって重要ではないため、図には示されていません)。詳細については、UMDF のドキュメントを参照してください)。 ドライバーは、WPD API によって受信された WPD メッセージを処理する WPD 固有の I/O 制御コード (IOCL) ハンドラーを実装します。 ドライバーは WPD シリアライザーを使用して、これらのメッセージ バッファーからコマンドとパラメーターをアンパックし、応答をリターン バッファーにパックします。

WPD ドライバーは、通常は Win32 ファイル操作 (CreateFile、ReadFile、WriteFile など) を介してアクセスされるカーネル モード ドライバーを介してデバイスと通信できます。 一般的なバスの場合、Microsoft はベンダーが使用する標準カーネル ドライバーを提供します。これにより、ベンダーはユーザー モードのみのドライバー ソリューションを出荷できます。 さらに、メディア転送プロトコル (MTP) および Mass Storage Class (MSC) デバイスの場合、Microsoft は WPD クラス ドライバーを提供します。

WPD ドライバーの詳細については、Windows ドライバー キットのWindowsポータブル デバイス ドライバーのドキュメントを参照してください。

アプリケーションの概要