Win32 API 日本語リファレンス
ホームSecurity.Cryptography.Certificates › IX509CertificateTemplateWritable

IX509CertificateTemplateWritable

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDf49466a7-395a-4e9e-b6e7-32b331600dc0継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

IX509CertificateTemplateWritable インターフェイスを使用すると、テンプレートストアへのテンプレートの追加、またはテンプレートストアからのテンプレートの削除を行うことができます。現在、使用可能なストアは Active Directory のみです。

メソッド 5

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT Initialize(IX509CertificateTemplate* pValue)

テンプレートから IX509CertificateTemplateWritable オブジェクトを初期化します。

pValueIX509CertificateTemplate*inoptional証明書要求テンプレートを表す IX509CertificateTemplate インターフェイスへのポインター。

戻り値

関数が成功した場合、関数は S_OK を返します。

関数が失敗した場合、エラーを示す HRESULT 値を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

リターンコード/値 説明
E_POINTER
pValue パラメーターを NULL にすることはできません。
E_NOINTERFACE
pValue パラメーターが IX509CertificateTemplate インターフェイスを指していません。
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
IX509CertificateTemplateWritable は既に初期化されています。
vtbl 8 HRESULT Commit(CommitTemplateFlags commitFlags, LPWSTR strServerContext)

Active Directory からテンプレートを削除するか、Active Directory にテンプレートを保存します。

commitFlagsCommitTemplateFlagsin

テンプレートの保存方法または削除方法を指定する CommitTemplateFlags 列挙値。次のいずれかの値である必要があります。

意味
CommitFlagSaveTemplateGenerateOID
テンプレートを保存し、そのオブジェクト識別子を作成します。
CommitFlagSaveTemplateUseCurrentOID
使用されません。
CommitFlagSaveTemplateOverwrite
使用されません。
CommitFlagDeleteTemplate
テンプレートを削除します。
strServerContextLPWSTRin変更を適用する Active Directory サーバーの DNS 名を格納する BSTR 変数。この値が NULL の場合、変更は既定のドメインコントローラーに適用されます。

戻り値

関数が成功した場合、関数は S_OK を返します。

関数が失敗した場合、エラーを示す HRESULT 値を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

リターンコード 説明
CRYPT_E_EXISTS
commitFlags 引数に CommitFlagSaveTemplateGenerateOID が指定されましたが、一致する共通名または一致するオブジェクト識別子 (OID) を持つテンプレートが既に存在します。
CRYPT_E_NOT_FOUND
commitFlags 引数に CommitFlagDelete が指定され、同じ共通名 (Common Name) を持つテンプレートが見つかりましたが、OID が一致しませんでした。
E_ACCESSDEINED
呼び出し元がテンプレートの保存または削除に必要な適切なアクセス許可を持っていません。呼び出し元は、Active Directory のテンプレートコンテナーおよびテンプレートオブジェクトに対する書き込みと削除のアクセス許可を持っている必要があります。呼び出し元がテンプレートコンテナーおよびオブジェクトに対する削除のアクセス許可を持っているが、OID コンテナーおよびオブジェクトに対する削除のアクセス許可を持っていない場合、テンプレートは削除されますが、OID は削除されません。
E_NOTIMPL
commitFlags 引数に CommitFlagSaveTemplateUseCurrentOID または CommitFlagSaveTemplateOverwrite が指定されました。これらの値は現在使用されていません。
HRESULT_FROM_WIN32(ERROR_NOT_FOUND)
commitFlags 引数に CommitFlagDelete が指定されましたが、一致する共通名 (CN) を持つテンプレートが見つかりませんでした。
HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)
Commit メソッドは既定のテンプレートではサポートされていません。
OLE_E_BLANK
IX509CertificateTemplateWritable オブジェクトが初期化されていません。

解説(Remarks)

commitFlags 引数に CommitFlagSaveTemplateGenerateOID が指定されている場合、このメソッドはテンプレートコンテナーと OID コンテナーが既に作成されていない限り成功しません。これらのコンテナーは、次のいずれかの方法で作成できます。

vtbl 9 HRESULT get_Property(EnrollmentTemplateProperty property, VARIANT* pValue)

IX509CertificateTemplateWritable オブジェクトのプロパティ値を設定または取得します。(Get)

propertyEnrollmentTemplatePropertyin取得する証明書テンプレートのプロパティを識別する EnrollmentTemplateProperty 列挙値である。
pValueVARIANT*out指定したテンプレートプロパティの値を VARIANT として受け取るポインタである。

解説(Remarks)

現在、設定できるプロパティは TemplatePropSecurityDescriptor のみです。プロパティ値は VT_BSTR 型または VT_BYREF|VT_BSTR 型の VARIANT であり、有効な SDDL 文字列である必要があります。

vtbl 10 HRESULT put_Property(EnrollmentTemplateProperty property, VARIANT value)

IX509CertificateTemplateWritable オブジェクトのプロパティ値を設定または取得します。(Put)

propertyEnrollmentTemplatePropertyin設定する証明書テンプレートのプロパティを識別する EnrollmentTemplateProperty 列挙値である。
valueVARIANTin指定プロパティに設定する値を VARIANT として渡す。

解説(Remarks)

現在、設定できるプロパティは TemplatePropSecurityDescriptor のみです。プロパティ値は VT_BSTR 型または VT_BYREF|VT_BSTR 型の VARIANT であり、有効な SDDL 文字列である必要があります。

vtbl 11 HRESULT get_Template(IX509CertificateTemplate** ppValue)

この IX509CertificateTemplateWritable インスタンスの初期化に使用された IX509CertificateTemplate オブジェクトのコピーを取得します。

ppValueIX509CertificateTemplate**outこの書き込み可能オブジェクトが表す IX509CertificateTemplate オブジェクトを受け取るポインタである。

解説(Remarks)

インターフェイスポインターの使用が終わったら、COM の Release メソッドを呼び出してポインターを解放する必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 不要)。