プロパティのコンテキスト
プロパティ コンテキストを使用すると、ミニドライバーは検証時に注目すべき複数のプロパティを簡単に特定できます。 ミニドライバーは、プロパティ コンテキストを活用することで、識別されたプロパティのいずれかが変更されているかどうかを迅速に判断できます。 その後、ミニドライバーはプロパティ コンテキストを WIA サービス ライブラリの関数 (wiasGetChangedValueFloat など) のいずれかに渡します。この関数はコンテキストを利用して、アプリケーション側でプロパティの値が変更されたかどうかを確認します。
WIA では、アプリケーションによってあるプロパティが変更された場合、それに依存する他のプロパティも合わせて更新するという検証の考え方を取っています。 ただし、アプリケーションが依存プロパティも同時に変更しているような場合は、最上位のプロパティをチェックするだけで、新しい値の妥当性を判断するだけで済みます。 プロパティの検証を行う WIA サービス ライブラリの関数は、この原則に基づいて、依存プロパティの更新が必要なタイミングと、単純に値の妥当性チェックだけで済むタイミングを判断しています。
プロパティのセットのコンテキストはメイン WIA_PROPERTY_CONTEXT 構造体で管理されます。この構造体には、プロパティ コンテキスト内のプロパティの数、プロパティ識別子 (PROPID) の配列へのポインター、BOOL 値の配列へのポインターの 3 つのメンバーが含まれます。 これらの配列は並行して管理されます (つまり、プロパティ識別子配列のインデックス N にあるプロパティは、BOOL 配列内の同じインデックスにある BOOL 値に関連付けられます)。
ミニドライバーは、 WIA サービス ライブラリ関数 wiasCreatePropContext を呼び出してプロパティ コンテキストのメモリを割り当て、値を入力します。 wiasGetChangedValueFloat などの他の WIA サービス ライブラリ関数では、プロパティ コンテキストを使用して、プロパティの値の更新が必要なタイミングを決定します。