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

ICertRequest

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID014e4840-5523-11d0-8812-00a0c903b83c継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

クライアントまたは仲介アプリケーションと証明書サービス (Certificate Services) との間の通信を提供します。

メソッド 7

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

vtbl 7 HRESULT Submit(INT Flags, LPWSTR strRequest, LPWSTR strAttributes, LPWSTR strConfig, INT* pDisposition)

証明書サービス (Certificate Services) サーバーに要求を送信します。

FlagsINTin

要求の形式、要求の種類、および要求が暗号化されているかどうかを指定します。要求のエンコード方法を指定するには、次の形式属性フラグのいずれかを使用できます。

意味
CR_IN_BASE64
begin/end なしの Unicode BASE64 形式。
CR_IN_BASE64HEADER
begin/end 付きの Unicode BASE64 形式。
CR_IN_BINARY
バイナリ形式。
CR_IN_ENCODEANY
CR_IN_BASE64HEADERCR_IN_BASE64CR_IN_BINARY のすべての形式を試行します。
 

要求の種類を指定するには、次の形式値フラグのいずれかを使用できます。

意味
CR_IN_RETURNCHALLENGE
CA に送信できるチャレンジを返します。このチャレンジは Certificate Management over CMS (CMC) の完全な要求です。このフラグを有効にした場合、GetFullResponseProperty メソッドを FR_PROP_FULLRESPONSE フラグとともに呼び出すと、キー構成証明チャレンジを含む CMC 応答が返されます。
CR_IN_CHALLENGERESPONSE
この呼び出しはチャレンジに対する応答です。RequestId を strAttributes パラメーターで渡し、チャレンジに対する応答を strRequest パラメーターで渡す必要があります。このフラグは、アプリケーションが復号化したチャレンジを CA に返す必要がある場合に有効にします。その後、GetFullResponseProperty メソッドを呼び出して、発行されたエンドエンティティ証明書を取得できます。
CR_IN_CMC
Certificate Management over CMS (CMC) 要求。
CR_IN_FORMATANY
CR_IN_CMCCR_IN_KEYGENCR_IN_PKCS7CR_IN_PKCS10 のすべての形式を試行します。
CR_IN_KEYGEN
Keygen 要求 (Netscape 形式)。
CR_IN_PKCS7
PKCS #7 要求 (更新または登録エージェント)。
CR_IN_PKCS10
PKCS #10 要求。
CR_IN_RPC
DCOM ではなく RPC を使用してメッセージを送信します。
CR_IN_FULLRESPONSE
完全な CMC 応答を返します。
CR_IN_CRLS
現在の証明書失効リストを含めます。
CR_IN_MACHINE
キーサービスコンピューターのコンテキストを使用します。
CR_IN_ROBO
メッセージが別の送信者に代わって要求されていることを示します。

If the 証明機関 (CA) が "renew on behalf of" 用に構成されていない場合、CA は要求を拒否します。

CA で "renew on behalf of" を有効にする方法の詳細については、Configuring the Certificate Enrollment Web Service for Renewal Only Mode を参照してください。

要求は更新要求である必要があり、署名証明書は要求と同じテンプレートを使用している必要があります。

さらに、要求は次のいずれかの条件が true の場合にのみ成功します。

  • 署名証明書が同じ CA によって発行されている必要があります
  • 署名証明書の SAN2 拡張にサブジェクトの UPN が含まれている
  • 署名証明書のサブジェクト名にサブジェクトの FQDN_1779 が含まれている
Windows Server 2008 および Windows Server 2003: このフラグはサポートされていません。
CR_IN_CLIENTIDNONE
クライアントを識別するデータを要求に含めません。

Windows Server 2008 および Windows Server 2003: このフラグはサポートされていません。

CR_IN_CONNECTONLY
サーバーとの DCOM 接続を確立しますが、要求は送信しないことを指定します。
strRequestLPWSTRin証明書要求を含む文字列へのポインター。FlagsCR_IN_BASE64 または CR_IN_BASE64HEADER が指定された場合、strRequest は Unicode 文字列である必要があります。
strAttributesLPWSTRin

要求に対するオプションの追加属性を含む文字列へのポインター。各属性は名前と値の文字列のペアです。コロン文字が名前と値を区切り、改行文字が複数の名前と値のペアを区切ります。例:

C++ "AttributeName1:AttributeValue1\nAttributeName2:AttributeValue2"
VB "AttributeName1:AttributeValue1" & vbNewLine & "AttributeName2:AttributeValue2"
証明書サービスサーバーは属性名を解析するとき、スペース、ハイフン (マイナス記号)、および大文字と小文字を無視します。たとえば、"AttributeName1"、"Attribute Name1"、"Attribute-name1" はすべて同等です。属性値については、証明書サービスサーバーは先頭と末尾の空白を無視します。
strConfigLPWSTRin

証明書サービスサーバーの有効な構成文字列を表します。この文字列は、登録サーバーの HTTPS URL、または ComputerName\CAName の形式のいずれかです。ComputerName はサーバーのネットワーク名、CAName証明機関の共通名です (証明書サービスのセットアップ時に入力したもの)。構成文字列名の詳細については、 ICertConfig を参照してください。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: 入力として HTTPS URL はサポートされていません。

pDispositionINT*out要求の処理状況の値へのポインター。

戻り値

C++

メソッドが成功した場合、S_OK を返します。

この関数が正常に完了すると、*pDisposition は次の表のいずれかの値に設定されます。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

VB

戻り値は要求の処理状況を指定します。処理状況は次のいずれかの値です。
戻り値コード 説明
CR_DISP_DENIED
要求が拒否されました
CR_DISP_ERROR
要求が失敗しました
CR_DISP_INCOMPLETE
要求が完了しませんでした
CR_DISP_ISSUED
証明書が発行されました
CR_DISP_ISSUED_OUT_OF_BAND
証明書が別途発行されました
CR_DISP_UNDER_SUBMISSION
要求が送信中として受理されました

解説(Remarks)

BASE64 形式の要求をファイルから読み取る場合は、ファイルが Unicode であることを確認するか、このメソッドで要求を送信する前に ASCII から Unicode に変換してください。

Examples

    //  The pointer to the interface object.
    ICertRequest * pCertRequest = NULL;

    //  The variable for the computer\CAName.
    BSTR         bstrCA = NULL;

    //  The variable for the request.
    BSTR         bstrRequest = NULL;

    //  The variable for the attributes.
    BSTR         bstrAttribs = NULL;

    //  The variable for the disposition code.
    long        nDisp;

    HRESULT     hr;

    //  Initialize COM.
    hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);

    //  Check status.
    if (FAILED(hr))
    {
        printf("Failed CoInitializeEx [%x]\n", hr);
        goto error;
    }

    //  Instantiate the CertConfig object.
    hr = CoCreateInstance(CLSID_CCertRequest,
                          NULL,
                          CLSCTX_INPROC_SERVER,
                          IID_ICertRequest,
                          (void **)&pCertRequest);
    if (FAILED(hr))
    {
        printf("Failed CoCreateInstance pCertRequest [%x]\n", hr);
        goto error;
    }

    //  Specify the certification authority.
    //  Note: In C++, produce one backslash (\) by using two.
    bstrCA = SysAllocString(L"server01\\myCAName");

    //  Create the request (not shown), and assign it to bstrRequest,
    //  for example, use ICEnroll::createPKCS10.

    //  Generate the attributes. In this case, no attributes
    //  are specified.
    bstrAttribs = SysAllocString(L"");
    
    //  Submit the request.
    hr = pCertRequest->Submit(CR_IN_BASE64 | CR_IN_PKCS10, 
                              bstrRequest,
                              bstrAttribs,
                              bstrCA, 
                              &nDisp );
    if (FAILED(hr))
    {
        printf("Failed Submit [%x]\n", hr);
        goto error;
    }
    else
    {
        //  Use the disposition value as needed.
    }

    //  Done processing.

error:

    //  Free BSTR values.
    if (NULL != bstrCA)
        SysFreeString(bstrCA);

    if (NULL != bstrRequest)
        SysFreeString(bstrRequest);

    if (NULL != bstrAttribs)
        SysFreeString(bstrAttribs);

    //  Clean up object resources.
    if (NULL != pCertRequest)
        pCertRequest->Release();

    //  Free COM resources.
    CoUninitialize();
vtbl 8 HRESULT RetrievePending(INT RequestId, LPWSTR strConfig, INT* pDisposition)

以前に CR_DISP_INCOMPLETE または CR_DISP_UNDER_SUBMISSION を返した可能性のある以前の要求から、証明書の処理状況を取得します。

RequestIdINTin以前に CR_DISP_INCOMPLETE または CR_DISP_UNDER_SUBMISSION を返した要求の ID。
strConfigLPWSTRin

証明書サービスサーバーの有効な構成文字列を表します。この文字列は、登録サーバーの HTTPS URL、または ComputerName\CAName の形式のいずれかです。ComputerName はサーバーのネットワーク名、CAName証明機関の共通名です (証明書サービスのセットアップ時に入力したもの)。構成文字列名の詳細については、 ICertConfig を参照してください。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: 入力として HTTPS URL はサポートされていません。

pDispositionINT*out要求の処理状況の値へのポインター。

戻り値

C++

メソッドが成功した場合、S_OK を返します。

この関数が正常に完了すると、*pDisposition は次の表のいずれかの値に設定されます。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

VB

戻り値は要求の処理状況を指定します。処理状況は次のいずれかの値です。
戻り値コード 説明
CR_DISP_INCOMPLETE
要求が完了しませんでした
CR_DISP_ERROR
要求が失敗しました
CR_DISP_DENIED
要求が拒否されました
CR_DISP_ISSUED
証明書が発行されました
CR_DISP_ISSUED_OUT_OF_BAND
証明書が別途発行されました
CR_DISP_UNDER_SUBMISSION
要求が送信中として受理されました

解説(Remarks)

このメソッドの呼び出しが成功すると、EXITEVENT_CERTRETRIEVEPENDING イベントが生成されます。アクティブな終了モジュール (exit module) は、( ICertExit3::Notify の呼び出しによって) このイベントの通知を受け取ります。ただし、終了モジュールが ICertExit3::Initialize の呼び出し時にこのイベントを指定していた場合に限ります。

Examples

BSTR    bstrCA = NULL;
long    nReqID, nDisp;

// In this example, the request ID is hard-coded.
nReqID = 1234;

// Note use of two '\' in C++ to produce one '\'.
bstrCA = SysAllocString(L"server01\\myCAName");

// pCertRequest is previously instantiated ICertRequest
// object pointer. Retrieve the status for the specified request.
hr = pCertRequest->RetrievePending( nReqID, bstrCA, &nDisp );
if (FAILED(hr))
{
    printf("Failed RetrievePending [%x]\n", hr);
    goto error;
}
else
{
    // Use the disposition value as needed...
}
// Free BSTR resource.
if ( NULL != bstrCA )
    SysFreeString( bstrCA );
vtbl 9 HRESULT GetLastStatus(INT* pStatus)

この要求の最後の戻りコードを取得します。これは要求の処理状況ではなく、エラーコード情報を返します。

pStatusINT*out要求のステータスコードへのポインター。

戻り値

C++

メソッドが成功した場合、S_OK を返します。

この関数が正常に完了すると、*pStatusICertRequest3::SubmitICertRequest3::RetrievePending、または ICertRequest3::GetCACertificate の最新の呼び出しの結果コードに設定されます。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

VB

戻り値は CCertRequest3.SubmitCCertRequest3.RetrievePending または CCertRequest3.GetCACertificate の最新の呼び出しの結果コードです。

解説(Remarks)

GetLastStatus によって取得される値は、 ICertRequest3::SubmitICertRequest3::RetrievePending、または ICertRequest3::GetCACertificate の最新の呼び出しに依存します。これらのメソッドのいずれかの呼び出しがサーバー上で失敗した場合は、GetLastStatus を呼び出してエラー番号を取得します。一部のサーバー障害 (拒否された要求など) では、メソッド呼び出しから S_OKCR_DISP_ISSUED 以外の処理状況が返されるため、GetLastStatus を使用して失敗の具体的な原因を取得できます。これらのメソッドのいずれかの呼び出しが成功した場合、その後の GetLastStatus の呼び出しは S_OK (ゼロ) を返します。

さらに、要求の処理状況は証明書サービスのデータベースに保存され、証明機関 MMC スナップインで表示できます (「要求処理状況」列を選択します)。

Examples

HRESULT    hrServer, hr;
// pCertRequest is previously instantiated
// ICertRequest object pointer.
hr = pCertRequest->GetLastStatus((LONG *) &hrServer);
if (FAILED(hr))
{
    printf("Failed GetLastStatus [%x]\n", hr);
    goto error;
}
else
{
    // Use the HRESULT value as needed...
}
vtbl 10 HRESULT GetRequestId(INT* pRequestId)

要求および後続の証明書の現在の内部要求番号を取得します。

pRequestIdINT*out要求 ID 値へのポインター。

戻り値

C++

メソッドが成功した場合、S_OK を返します。

この関数が正常に完了すると、*pRequestId は要求 ID の値に設定されます。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

VB

戻り値は、要求および後続の証明書の現在の内部要求番号を指定します。
vtbl 11 HRESULT GetDispositionMessage(LPWSTR* pstrDispositionMessage)

証明書要求の現在の処理状況を示す、人間が読めるメッセージを取得します。

pstrDispositionMessageLPWSTR*out処理状況メッセージを含む BSTR へのポインター。

戻り値

C++

メソッドが成功した場合、S_OK を返します。

この関数が正常に完了すると、*pstrDispositionMessage は、証明書要求の現在の処理状況を示す、人間が読めるメッセージを含む BSTR に設定されます。このメソッドを使用するには、BSTR 型の変数を作成し、その変数を NULL に設定して、この変数のアドレスを pstrDispositionMessage として渡します。BSTR の使用が終わったら、SysFreeString 関数を呼び出して解放します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

VB

戻り値は、証明書要求の現在の処理状況を示す、人間が読めるメッセージを含む文字列です。

解説(Remarks)

アプリケーションは、以前の ICertRequest3::Submit または ICertRequest3::RetrievePending の呼び出しによってサーバーから取得されたメッセージを得るために、このメソッドを呼び出します。さらに、このメッセージは証明書サービスのデータベースに保存され、証明機関 MMC スナップインで表示できます (「要求処理状況メッセージ」列を選択します)。メッセージにローカライズされたテキストが含まれている場合、それは (サーバーのロケールに基づいて) サーバー上でローカライズされたものです。

Examples

#include <windows.h>
#include <stdio.h>
#include <Certcli.h>

    BSTR    bstrDispMsg = NULL;
    // pCertRequest is previously instantiated ICertRequest object 
    // pointer. Retrieve the disposition message for the 
    // previous request.
    hr = pCertRequest->GetDispositionMessage(&bstrDispMsg);
    if (FAILED(hr))
    {
        printf("Failed GetDispositionMessage [%x]\n", hr);
        goto error;
    }
    else
    {
        // Use the disposition message as needed...
    }

    // Done processing.

error:

    // Free BSTR values.
    if (NULL != bstrCA)
        SysFreeString(bstrCA);

    if (NULL != bstrDispMsg)
        SysFreeString(bstrDispMsg);
vtbl 12 HRESULT GetCACertificate(INT fExchangeCertificate, LPWSTR strConfig, INT Flags, LPWSTR* pstrCertificate)

証明書サービスサーバーの証明機関 (CA) 証明書を返します。

fExchangeCertificateINTin

どの CA 証明書を返すかを指定するブール値。fExchangeCertificatefalse に設定されている場合、CA の署名証明書が返されます。CA の署名証明書は、CA によって発行された証明書の署名を検証するために使用できます。

Windows Server 2003: fExchangeCertificatetrue に設定されている場合、CA の交換証明書 (Exchange 証明書) が返されます。CA の交換証明書は、CA に送信される要求を暗号化するために使用できます。

Windows 7 および Windows Server 2008 R2 以降では、このパラメーターは https:// 登録中は無視され、関数が成功した場合は常に CA 交換証明書を返します。登録 Web サービスの CA 署名証明書を取得するには、Property メソッドを、ICertificationAuthority インターフェイスで、CAPropCertificate EnrollmentCAProperty 列挙値とともに使用します。

TRUE は (Microsoft のヘッダーファイルで) C/C++ プログラマー向けに 1 として定義されているのに対し、Visual Basic では True キーワードが -1 として定義されていることに注意してください。そのため、Visual Basic 開発者はこのパラメーターを TRUE に設定するには (True ではなく) 1 を使用する必要があります。ただし、このパラメーターを FALSE に設定するには、Visual Basic 開発者は 0 または False を使用できます。

strConfigLPWSTRin

証明書サービスサーバーの有効な構成文字列を表します。この文字列は、登録サーバーの HTTPS URL、または ComputerName\CAName の形式のいずれかです。ComputerName はサーバーのネットワーク名、CAName証明機関の共通名です (証明書サービスのセットアップ時に入力したもの)。構成文字列名の詳細については、 ICertConfig を参照してください。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: 入力として HTTPS URL はサポートされていません。

FlagsINTin

返される証明書の形式を指定するには、次のフラグを使用できます。

意味
CR_OUT_BASE64HEADER
begin/end 付きの BASE64 形式。
CR_OUT_BASE64
begin/end なしの BASE64 形式。
CR_OUT_BINARY
バイナリ形式。
 

次のフラグを形式フラグと組み合わせることで、要求された CA 証明書に完全な証明書チェーンを含めるように指定できます。それ以外の場合は、要求された CA 証明書のみが (X.509 形式で) 返されます。

意味
CR_OUT_CHAIN
完全な証明書チェーンを PKCS #7 に含めます。
pstrCertificateLPWSTR*out指定された形式で、証明書サービスサーバーの CA 証明書を含む BSTR へのポインター。

戻り値

C++

メソッドが成功した場合、S_OK を返します。

このメソッドが正常に完了すると、*pstrCertificate は CA 証明書を含む BSTR に設定されます。このメソッドを使用するには、BSTR 型の変数を作成し、その変数を NULL に設定して、この変数のアドレスを pstrCertificate として渡します。

*pstrCertificate の使用が終わったら、SysFreeString 関数を呼び出して解放します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

VB

指定された形式での、証明書サービスサーバーの CA 証明書。

解説(Remarks)

管理タスクは DCOM を使用します。以前のバージョンの Certadm.h で定義されているこのインターフェイスメソッドを呼び出すコードは、クライアントとサーバーの両方が同じ Windows オペレーティングシステムを実行している限り、Windows ベースのサーバー上で動作します。

vtbl 13 HRESULT GetCertificate(INT Flags, LPWSTR* pstrCertificate)

要求に対して発行された証明書を、X.509 証明書として、またはオプションで Public Key Cryptography Standards (PKCS) にパッケージ化して返します。

FlagsINTin

形式、および完全な証明書チェーンを含めるかどうかを指定するフラグ。

返される証明書の形式は、次のフラグのいずれかにできます。

意味
CR_OUT_BASE64HEADER
begin/end 付きの BASE64 形式
CR_OUT_BASE64
begin/end なしの BASE64 形式
CR_OUT_BINARY
バイナリ形式
 

次のフラグを形式フラグと組み合わせることができます。

意味
CR_OUT_CHAIN
完全な証明書チェーンを PKCS #7 に含めます。

このフラグが指定されていない場合は、要求された証明書のみが X.509 形式で返されます。

CR_OUT_CRLS
証明書失効リスト (CRL) を PKCS #7 に含めます。
 

たとえば、C++ で完全な証明書チェーンを含むバイナリ証明書を取得するには、次のように記述します。

hResult = pCertReq->GetCACertificate(FALSE, bstrConfig,
     CR_OUT_BINARY | CR_OUT_CHAIN, &bstrCert);
pstrCertificateLPWSTR*out

指定された形式で証明書を含む BSTR へのポインター。

このメソッドを使用するときは、BSTR 型の変数を作成し、その変数を NULL に設定して、この変数のアドレスを pstrCertificate として渡します。pstrCertificate が指す証明書の使用が終わったら、SysFreeString 関数を呼び出して解放します。

戻り値

メソッドが *pstrCertificate を要求の証明書を含む BSTR に設定した場合、S_OK を返します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

解説(Remarks)

アプリケーションは、以前の ICertRequest3::Submit または ICertRequest3::RetrievePending の呼び出しによって発行された証明書を取得するために、このメソッドを呼び出します。

Examples

次の例は、証明書の取得を示しています。

#include <windows.h>
#include <stdio.h>
#include <Certcli.h>

HRESULT main()
{
    //  Pointer to interface object.
    ICertRequest * pCertRequest = NULL;

    //  Variable for COMPUTER\CANAME.
    BSTR         bstrCA = NULL;

    //  Variable for CA Certificate.
    BSTR         bstrCACert = NULL;

    HRESULT     hr;

    //  Initialize COM.
    hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);

    //  Check status.
    if (FAILED(hr))
    {
        printf("Failed CoInitializeEx [%x]\n", hr);
        goto error;
    }

    //  Instantiate the CertConfig object.
    hr = CoCreateInstance(CLSID_CCertRequest,
                          NULL,
                          CLSCTX_INPROC_SERVER,
                          IID_ICertRequest,
                          (void **)&pCertRequest);
    if (FAILED(hr))
    {
        printf("Failed CoCreateInstance pCertRequest [%x]\n", hr);
        goto error;
    }

    //  Note use of two backslashes (\\) in C++ 
    //  to produce one backslash (\).
    bstrCA = SysAllocString(L"server01\\myCAName");
    
    //  Retrieve the CA certificate.
    hr = pCertRequest->GetCACertificate(FALSE,
                                        bstrCA,
                                        CR_OUT_BASE64,
                                        &bstrCACert);
    if (FAILED(hr))
    {
        printf("Failed GetCACertificate [%x]\n", hr);
        goto error;
    }
    else
    {
        //  Use CA Certificate as needed.
    }

    //  Done processing.

error:

    //  Free BSTR values.
    if (NULL != bstrCA)
        SysFreeString(bstrCA);

    if (NULL != bstrCACert)
        SysFreeString(bstrCACert);

    //  Clean up object resources.
    if (NULL != pCertRequest)
        pCertRequest->Release();

    //  Free COM resources.
    CoUninitialize();

    return hr;

}
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ICertRequest "{014E4840-5523-11D0-8812-00A0C903B83C}"
#usecom global ICertRequest IID_ICertRequest "{}"
#comfunc global ICertRequest_Submit                 7 int,wstr,wstr,wstr,var
#comfunc global ICertRequest_RetrievePending        8 int,wstr,var
#comfunc global ICertRequest_GetLastStatus          9 var
#comfunc global ICertRequest_GetRequestId           10 var
#comfunc global ICertRequest_GetDispositionMessage  11 var
#comfunc global ICertRequest_GetCACertificate       12 int,wstr,int,var
#comfunc global ICertRequest_GetCertificate         13 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。