センサー クラス拡張について
センサーを Windows 7 (特に Sensor and Location プラットフォーム) に公開するデバイス ドライバーを簡単に作成できるようにするために、Windows 7 にはセンサー ドライバーのクラス拡張が含まれています。センサー デバイス ドライバーの必須コンポーネントであるこの COM オブジェクトにより、簡単なインターフェイス セットが提供され、プログラマは、大量の定型コードを記述しなくてもセンサー ドライバーを実装できます。さらに、このクラス拡張には次のような利点があります。
Sensor API、Location API、コントロール パネルなど、Windows 7 Sensor and Location プラットフォームの他のコンポーネントで、接続されているセンサーを検出して列挙できます。
クラス拡張によって、個人情報を扱うセンサーに適したアクセス制御の制限が適用されるため、ユーザーのプライバシーを適切に保護できます。
ドライバーからデータを取得し、API レイヤーを介してイベント通知を生成するための標準的な方法が提供されます。
COM CoCreateInstance メソッドを呼び出し、クラス拡張のインターフェイスである ISensorClassExtension へのポインターを取得することで、センサー クラス拡張のインスタンスを作成します。センサー クラス拡張は、IPnpCallbackHardware::OnPrepareHardware で呼び出されたときに、作成および初期化できます。次のコード例では、m_pClassExtension は ISensorClassExtension へのポインターです。
hr = CoCreateInstance(CLSID_SensorClassExtension,
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(ISensorClassExtension),
(VOID**)&m_pClassExtension);
センサー クラス拡張インスタンスは、各ハードウェア デバイス ドライバーに 1 つだけ作成する必要があります。デバイスに複数のセンサーが含まれている場合、各センサーは、デバイスのセンサーごとに一意の文字列 ID またはセンサー ID を保持する必要があります。