Win32 API 日本語リファレンス
ホームStorage.Packaging.Opc › IOpcCertificateEnumerator

IOpcCertificateEnumerator

COM
IID85131937-8f24-421f-b439-59ab24d140b8継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

CERT_CONTEXT 構造体へのポインターを列挙する読み取り専用の列挙子です。

解説(Remarks)

列挙子が作成された時点では、現在位置は列挙子の最初のポインターの手前にあります。現在位置を最初のポインターに設定するには、列挙子の作成後に MoveNext メソッドを呼び出してください。

セットが変更されると列挙子は無効になり、それ以降の呼び出しはすべて失敗します。

IOpcCertificateEnumerator インターフェイスポインターを取得するには、IOpcCertificateSet::GetEnumerator メソッドまたは IOpcDigitalSignature::GetCertificateEnumerator メソッドを呼び出します。

スレッドセーフティ

パッケージングオブジェクトはスレッドセーフではありません。

詳細については、Getting Started with the Packaging API を参照してください。

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT MoveNext(BOOL* hasNext)

列挙子の現在位置を次の CERT_CONTEXT 構造体に移動します。

hasNextBOOL*out

現在位置にある CERT_CONTEXT 構造体の状態を示すブール値です。

hasNext の値は、メソッドが成功した場合にのみ有効です。

意味
TRUE
列挙子の現在位置が次のポインターに進み、そのポインターは有効です。
FALSE
列挙子の現在位置がコレクションの末尾を越えて進んだため、有効ではありません。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表の値などがありますが、これらに限定されません。

リターンコード/値 説明
S_OK
メソッドは成功しました。
E_POINTER
hasNext パラメーターが NULL です。
OPC_E_ENUM_CANNOT_MOVE_NEXT
0x80510051
現在位置は、すでに列挙子の最後の項目を越えています。
OPC_E_ENUM_COLLECTION_CHANGED
0x80510050
基になるセットが変更されたため、列挙子は無効です。
vtbl 4 HRESULT MovePrevious(BOOL* hasPrevious)

列挙子の現在位置を前の CERT_CONTEXT 構造体に移動します。

hasPreviousBOOL*out

現在位置にある CERT_CONTEXT 構造体の状態を示すブール値です。

hasPrevious の値は、メソッドが成功した場合にのみ有効です。

意味
TRUE
列挙子の現在位置がコレクション内の前のポインターに移動し、そのポインターは有効です。
FALSE
列挙子の現在位置がコレクションの先頭を越えて移動したため、有効ではありません。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表の値などがありますが、これらに限定されません。

リターンコード/値 説明
S_OK
メソッドは成功しました。
E_POINTER
hasPrevious パラメーターが NULL です。
OPC_E_ENUM_COLLECTION_CHANGED
0x80510050
基になるセットが変更されたため、列挙子は無効です。
OPC_E_ENUM_CANNOT_MOVE_PREVIOUS
0x80510052
現在位置は、すでに列挙子の最初の項目の手前にあります。
vtbl 5 HRESULT GetCurrent(CERT_CONTEXT** certificate)

列挙子の現在位置にある CERT_CONTEXT 構造体を取得します。

certificateCERT_CONTEXT**outCERT_CONTEXT 構造体へのポインターです。 メソッドが成功した場合は、CertFreeCertificateContext 関数を呼び出して、この構造体のメモリを解放してください。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表の値などがありますが、これらに限定されません。

リターンコード/値 説明
S_OK
メソッドは成功しました。
E_POINTER
partReference パラメーターが NULL です。
OPC_E_ENUM_COLLECTION_CHANGED
0x80510050
基になるセットが変更されたため、列挙子は無効です。
OPC_E_ENUM_INVALID_POSITION
0x80510053
列挙子は、現在位置からこの操作を実行できません。
OPC_E_DS_EXTERNAL_SIGNATURE
0x8051001E
Signature パートを対象とするリレーションシップが外部ターゲットモードになっています。Signature パートはパッケージ内に存在しなければなりません。
OPC_E_DS_INVALID_CERTIFICATE_RELATIONSHIP
0x8051001D
デジタル署名証明書型のリレーションシップが外部ターゲットモードになっています。

このリレーションシップ型の詳細については、OPC を参照してください。

OPC_E_DS_INVALID_RELATIONSHIP_TRANSFORM_XML
0x80510021
リレーションシップ変換の使用を示す Transform 要素と、その変換の選択条件が、OPC で規定されたスキーマに準拠していません。
OPC_E_DS_MISSING_CERTIFICATE_PART
0x80510056
証明書を含み、デジタル署名証明書型のリレーションシップのターゲットとなるパートが存在しません。

このリレーションシップ型の詳細については、OPC を参照してください。

OPC_E_DS_SIGNATURE_PROPERTY_MISSING_TARGET
0x80510045
SignatureProperty 要素に必須の Target 属性がありません。
OPC_E_UNEXPECTED_CONTENT_TYPE
0x80510005
パートのコンテンツタイプが期待されるコンテンツタイプ (OPC、ECMA-376 Part 2 で規定) と異なるか、またはパートの内容がそのパートのコンテンツタイプと一致しませんでした。

解説(Remarks)

CERT_CONTEXT 構造体が表す証明書が破損している場合や X.509 証明書でない場合、このメソッドはエラーを返します。さらに、その署名が引き続き検証されるかどうかは、呼び出し元が使用する署名ポリシーによって決まります。この種のエラーが返された後も、MoveNext メソッドまたは MovePrevious メソッドを呼び出して列挙子の反復処理を続行できます。

列挙子が作成された時点では、現在位置は列挙子の最初のポインターの手前にあります。現在位置を最初のポインターに設定するには、列挙子の作成後に MoveNext メソッドを呼び出してください。

スレッドセーフティ

パッケージングオブジェクトはスレッドセーフではありません。

詳細については、Getting Started with the Packaging API を参照してください。

vtbl 6 HRESULT Clone(IOpcCertificateEnumerator** copy)

現在の IOpcCertificateEnumerator インターフェイスポインターと、そのすべての下位要素のコピーを作成します。

copyIOpcCertificateEnumerator**outIOpcCertificateEnumerator インターフェイスポインターのコピーへのポインターです。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表の値などがありますが、これらに限定されません。

リターンコード/値 説明
S_OK
メソッドは成功しました。
E_POINTER
copy パラメーターが NULL です。
OPC_E_ENUM_COLLECTION_CHANGED
0x80510050
基になるセットが変更されたため、列挙子は無効です。

解説(Remarks)

コピーは、元の列挙子と同一の現在位置およびセットを持ちます。

スレッドセーフティ

パッケージングオブジェクトはスレッドセーフではありません。

詳細については、Getting Started with the Packaging API を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IOpcCertificateEnumerator "{85131937-8F24-421F-B439-59AB24D140B8}"
#usecom global IOpcCertificateEnumerator IID_IOpcCertificateEnumerator "{}"
#comfunc global IOpcCertificateEnumerator_MoveNext      3 var
#comfunc global IOpcCertificateEnumerator_MovePrevious  4 var
#comfunc global IOpcCertificateEnumerator_GetCurrent    5 var
#comfunc global IOpcCertificateEnumerator_Clone         6 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。