IX509CertificateTemplateWritable
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
IX509CertificateTemplateWritable インターフェイスを使用すると、テンプレートストアへのテンプレートの追加、またはテンプレートストアからのテンプレートの削除を行うことができます。現在、使用可能なストアは Active Directory のみです。
メソッド 5
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
テンプレートから IX509CertificateTemplateWritable オブジェクトを初期化します。
| pValue | IX509CertificateTemplate* | inoptional | 証明書要求テンプレートを表す IX509CertificateTemplate インターフェイスへのポインター。 |
戻り値
関数が成功した場合、関数は S_OK を返します。
関数が失敗した場合、エラーを示す HRESULT 値を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
| リターンコード/値 | 説明 |
|---|---|
| pValue パラメーターを NULL にすることはできません。 | |
| pValue パラメーターが IX509CertificateTemplate インターフェイスを指していません。 | |
|
IX509CertificateTemplateWritable は既に初期化されています。 |
Active Directory からテンプレートを削除するか、Active Directory にテンプレートを保存します。
| commitFlags | CommitTemplateFlags | in | テンプレートの保存方法または削除方法を指定する CommitTemplateFlags 列挙値。次のいずれかの値である必要があります。
| ||||||||||
| strServerContext | LPWSTR | in | 変更を適用する Active Directory サーバーの DNS 名を格納する BSTR 変数。この値が NULL の場合、変更は既定のドメインコントローラーに適用されます。 |
戻り値
関数が成功した場合、関数は S_OK を返します。
関数が失敗した場合、エラーを示す HRESULT 値を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
| リターンコード | 説明 |
|---|---|
| commitFlags 引数に CommitFlagSaveTemplateGenerateOID が指定されましたが、一致する共通名または一致するオブジェクト識別子 (OID) を持つテンプレートが既に存在します。 | |
| commitFlags 引数に CommitFlagDelete が指定され、同じ共通名 (Common Name) を持つテンプレートが見つかりましたが、OID が一致しませんでした。 | |
|
呼び出し元がテンプレートの保存または削除に必要な適切なアクセス許可を持っていません。呼び出し元は、Active Directory のテンプレートコンテナーおよびテンプレートオブジェクトに対する書き込みと削除のアクセス許可を持っている必要があります。呼び出し元がテンプレートコンテナーおよびオブジェクトに対する削除のアクセス許可を持っているが、OID コンテナーおよびオブジェクトに対する削除のアクセス許可を持っていない場合、テンプレートは削除されますが、OID は削除されません。 |
| commitFlags 引数に CommitFlagSaveTemplateUseCurrentOID または CommitFlagSaveTemplateOverwrite が指定されました。これらの値は現在使用されていません。 | |
|
commitFlags 引数に CommitFlagDelete が指定されましたが、一致する共通名 (CN) を持つテンプレートが見つかりませんでした。 |
|
Commit メソッドは既定のテンプレートではサポートされていません。 |
| IX509CertificateTemplateWritable オブジェクトが初期化されていません。 |
解説(Remarks)
commitFlags 引数に CommitFlagSaveTemplateGenerateOID が指定されている場合、このメソッドはテンプレートコンテナーと OID コンテナーが既に作成されていない限り成功しません。これらのコンテナーは、次のいずれかの方法で作成できます。
- サーバーにエンタープライズ証明機関 (CA) をインストールする。
- Certtmpl.msc スナップインを起動する。
- Certutil.exe -installDefaultTemplates コマンドを使用して既定のテンプレートをインストールする。
IX509CertificateTemplateWritable オブジェクトのプロパティ値を設定または取得します。(Get)
| property | EnrollmentTemplateProperty | in | 取得する証明書テンプレートのプロパティを識別する EnrollmentTemplateProperty 列挙値である。 |
| pValue | VARIANT* | out | 指定したテンプレートプロパティの値を VARIANT として受け取るポインタである。 |
解説(Remarks)
現在、設定できるプロパティは TemplatePropSecurityDescriptor のみです。プロパティ値は VT_BSTR 型または VT_BYREF|VT_BSTR 型の VARIANT であり、有効な SDDL 文字列である必要があります。
IX509CertificateTemplateWritable オブジェクトのプロパティ値を設定または取得します。(Put)
| property | EnrollmentTemplateProperty | in | 設定する証明書テンプレートのプロパティを識別する EnrollmentTemplateProperty 列挙値である。 |
| value | VARIANT | in | 指定プロパティに設定する値を VARIANT として渡す。 |
解説(Remarks)
現在、設定できるプロパティは TemplatePropSecurityDescriptor のみです。プロパティ値は VT_BSTR 型または VT_BYREF|VT_BSTR 型の VARIANT であり、有効な SDDL 文字列である必要があります。
この IX509CertificateTemplateWritable インスタンスの初期化に使用された IX509CertificateTemplate オブジェクトのコピーを取得します。
| ppValue | IX509CertificateTemplate** | out | この書き込み可能オブジェクトが表す IX509CertificateTemplate オブジェクトを受け取るポインタである。 |
解説(Remarks)
インターフェイスポインターの使用が終わったら、COM の Release メソッドを呼び出してポインターを解放する必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IX509CertificateTemplateWritable "{F49466A7-395A-4E9E-B6E7-32B331600DC0}" #usecom global IX509CertificateTemplateWritable IID_IX509CertificateTemplateWritable "{}" #comfunc global IX509CertificateTemplateWritable_Initialize 7 sptr #comfunc global IX509CertificateTemplateWritable_Commit 8 int,wstr #comfunc global IX509CertificateTemplateWritable_get_Property 9 int,var #comfunc global IX509CertificateTemplateWritable_put_Property 10 int,int #comfunc global IX509CertificateTemplateWritable_get_Template 11 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IX509CertificateTemplateWritable "{F49466A7-395A-4E9E-B6E7-32B331600DC0}" #usecom global IX509CertificateTemplateWritable IID_IX509CertificateTemplateWritable "{}" #comfunc global IX509CertificateTemplateWritable_Initialize 7 sptr #comfunc global IX509CertificateTemplateWritable_Commit 8 int,wstr #comfunc global IX509CertificateTemplateWritable_get_Property 9 int,sptr #comfunc global IX509CertificateTemplateWritable_put_Property 10 int,int #comfunc global IX509CertificateTemplateWritable_get_Template 11 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。