ドライバーは、フォルダーの取得を直接サポートする必要はありません。 ドライバーがサポートしていない場合、WIA サービスは項目ツリーを再帰的にウォークし、WIA_IPA_ITEM_FLAGS プロパティに WiaItemTypeTransfer ビットが設定されているすべての項目に対して IWiaMiniDrv::d rvAcquireItemData を呼び出します。
フォルダーの取得を直接サポートするドライバーは、フォルダーアイテムの WIA_IPS_TRANSFER_CAPABILITIES プロパティを公開する必要があります。 このプロパティはフラグ プロパティであり、フォルダー取得機能を直接サポートすることを示すWIA_TRANSFER_ACQUIRE_CHILDREN_CAPABLE ビットが設定されている必要があります。 このサポートは、ドライバー自体が関連する項目を転送するためにツリーを移動することを意味し、WIA サービスは単に IWiaMiniDrv::d rvAcquireItemData をフォルダーに呼び出します。 ドライバーは、WIA_TRANSFER_ACQUIRE_CHILDREN ビットの lFlags パラメーターをテストすることで、通常の転送要求とフォルダー取得要求を区別できます。
ドライバーがフォルダーの取得を直接サポートする主な理由の 1 つは、効率です。 ドライバーは、WIA サービスが各項目の転送を呼び出すよりもはるかに効率的に複数の項目を転送する場合があります。
この状況の良い例は、マルチリージョン スキャン中です。 スキャナーのフラットベッドで複数の領域(たとえば個別の画像)が検出された場合、それらは"フラットベッド"項目の子として表現されることがあります。 この状況の例を次の図に示します。
"Flatbed" の子項目ごとに個別の転送が呼び出された場合、ドライバーは 3 つの個別のスキャンを実行します。これは時間がかかる可能性があります。 ただし、"Flatbed" でフォルダーの取得が要求された場合、ドライバーは 1 回のスキャンを実行し、分解して、3 つの個別の領域 (多くの場合は高速) を返します。
手記 より高度なドライバーのみがフォルダー取得を直接サポートすることをお勧めします。これは、ドライバーが項目ツリーを歩いて適切なアクションを実行する必要があるためです。