IShellItemArray::GetAttributes メソッド (shobjidl_core.h)

IShellItemArray に含まれる項目のセットの属性を取得します。 配列に複数の項目が含まれている場合、このメソッドによって取得される属性は 1 つの項目の属性ではなく、すべての項目の要求されたすべての属性の論理的な組み合わせになります。

構文

HRESULT GetAttributes(
  [in]  SIATTRIBFLAGS AttribFlags,
  [in]  SFGAOF        sfgaoMask,
  [out] SFGAOF        *psfgaoAttribs
);

パラメーター

[in] AttribFlags

種類: SIATTRIBFLAGS

配列に 1 つの項目が含まれている場合、このメソッドは GetAttributes と同じ結果を提供します。 ただし、配列に複数の項目が含まれている場合、すべての項目の属性セットが 1 つの属性セットに結合され、 psfgaoAttribs が指す値で返されます。 このパラメーターは、最終的な属性セットの決定方法を定義するために、次のいずれかの値を受け取ります。

SIATTRIBFLAGS_AND (0x00000001)

0x00000001。 配列に複数の項目がある場合は、ビットごとの AND を使用して、項目間で属性を結合します。 たとえば、1 つの項目を移動できる 2 つの項目 (SFGAO_CANMOVE) が配列に含まれており、2 つ目の項目が移動できない場合、メソッドはその属性ビットに対して (1 & 0) または 0 を返します。

SIATTRIBFLAGS_OR (0x00000002)

0x00000002。 配列に複数の項目がある場合は、ビットごとの OR を使用して、項目間で属性を結合します。 たとえば、1 つの項目を移動できる 2 つの項目 (SFGAO_CANMOVE) が配列に含まれており、2 つ目の項目が移動できない場合、メソッドはその属性ビットに対して (1 | 0) または 1 を返します。

SIATTRIBFLAGS_APPCOMPAT (0x00000003)

0x00000003。 シェル データ ソースから属性を直接取得します。 この値を使用するには、シェル項目配列が IShellFolder として初期化され、その内容が子 PIDL の配列として指定されている必要があります。

SIATTRIBFLAGS_MASK (0x00000003)

0x00000003。 SIATTRIBFLAGS_AND、SIATTRIBFLAGS_OR、およびSIATTRIBFLAGS_APPCOMPATのマスク。 呼び出し元は通常、この値を使用しません。

SIATTRIBFLAGS_ALLITEMS (0x00004000)

0x00004000。 Windows 7 以降。 配列内のすべての項目を調べて、属性を計算します。 これにより、大きな配列に対するパフォーマンスが低下する可能性があるため、必要な場合にのみ使用する必要があることに注意してください。 このフラグを渡すケースは非常にまれです。 詳細については、「解説」を参照してください。

[in] sfgaoMask

種類: SFGAOF

要求される特定の属性を指定するマスク。 SFGAO 値の 1 つ以上のビットごとの OR。

[out] psfgaoAttribs

種類: SFGAOF*

このメソッドが正常に返されるときに、要求された属性の値を含むビットマップ。

戻り値

型: HRESULT

返された属性が sfgaoMask で要求されたものと完全に一致する場合は S_OKを返し、属性が完全に一致しない場合はS_FALSE、それ以外の場合は標準 COM エラー値を返します。

注釈

シェル項目配列は、個々の属性が決定された後にキャッシュします。

このメソッドは、属性情報を収集する配列を通過すると、通常、その値が取り消し不能に設定された後、特定の属性の参照を停止します。 たとえば、SIATTRIBFLAGS_AND フラグが設定されている場合、属性が項目に設定されていないことが検出された後 (値 0)、AND 操作の結果は常に 0 になるため、他の項目でその属性値を引き続き調べる必要はありません。 したがって、属性の最終的なセットは、通常、配列内の最初のいくつかの項目のみを調べることで計算されます。これは、最終的な値を取得するために必要なすべてです。 配列内のすべての項目を調べる必要がある場合は、SIATTRIBFLAGS_ALLITEMS フラグを設定します。 ただし、これによりメソッドの戻りが大幅に遅くなる可能性があるので、原因なく実行しないでください。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shobjidl_core.h (Shobjidl.h を含む)