プロパティ シートの拡張
[プロパティ] コンテキスト メニュー項目を選択すると、デバイスの [スキャナー] フォルダーと [カメラ] コントロール パネルフォルダー (ルート項目) または [マイ コンピューター] フォルダーを介して、スキャナーやカメラのプロパティ シートにアクセスできます。
カメラとスキャナーのプロパティ シート拡張は、ユーザーが既定のスキャン ダイアログを使用しているときにアクティブになる、特定の画像取得セッション、つまりルート以外の IWiaItem オブジェクト (Microsoft Windows SDK ドキュメントを参照) のユーザー インターフェイスも提供できます。 これらの拡張機能は、画像取得ダイアログの詳細プロパティまたは詳細設定リンクからアクセスします。 プロパティのコンテキスト メニューからアクションを選択すると、WIA はベンダー提供の IShellExtInit および IShellPropSheetExt インターフェイスの実装を使用してプロパティ シートを構築します (Windows SDK ドキュメントを参照)。
プロパティ シートとコンテキスト メニューの両方の UI 拡張について、選択したアイテムを記述する IDataObject インターフェイス (Windows SDK ドキュメントで説明) では、WIAItemNames 形式または WIAItemPointer 形式のいずれかが使用されます。 これらの形式とその形式名は、wiadevd.h で定義されています。
形式名が CFSTR_WIAITEMNAMES である WIAItemNames 形式は、IWiaItem 識別子の二重 null で終わる一覧を指す HGLOBAL を返します。 識別子はそれぞれ「<デバイス ID>::<フルパス名>」という形式になっています。 ルート項目の場合、フルパス名の部分は空です。
WIAItemPointer 形式は、Microsoft Windows XP 以降のバージョンでサポートされています。 形式名は CFSTR_WIAITEMPTR です。 WIAItemPointer 形式は、tymed メンバーが TYMED_ISTREAM に設定された STGMEDIUM 構造体 (Windows SDK ドキュメントで宣言されている) を返します。 この形式は、ユーザーが 1 つのアイテムのみを選択する場合に使用できます。 プロパティシートやコンテキスト拡張では、STGMEDIUM 構造体に保存されている IStream オブジェクトに対し CoUnmarshalInterface を呼び出すことで、IWiaItem インターフェイスを取得できます。 (CoUnmarshalInterface 関数、IStream および IWiaItem インターフェイスの説明については、Windows SDK ドキュメントを参照してください。) この形式を使用すると、プロパティ シートのすべてのページで、スキャン中に重要となる、適切にマーシャリングされた IWiaItem インターフェイスを共有できます。