Share via


ICEnroll::enumProviders 方法 (xenroll.h)

[此方法已不再可供 Windows Server 2008 和 Windows Vista 使用。]

enumProviders 方法會擷取 ProviderType 屬性所指定之可用密碼編譯服務提供者的名稱 (CS) P。 這個方法最初是在 ICEnroll 介面中定義。

語法

HRESULT enumProviders(
  [in]  LONG dwIndex,
  [in]  LONG dwFlags,
  [out] BSTR *pbstrProvName
);

參數

[in] dwIndex

指定將擷取其名稱的 CSP 序數位置。 為第一個 CSP 指定零。

[in] dwFlags

指定傳遞至 CryptEnumProviders 函式的旗標。 目前未使用此參數;指定零。

[out] pbstrProvName

BSTR 變數的指標,可接收具有指定屬性類型的 CSP 名稱。 當您完成 使用 BSTR 時,請藉由呼叫 SysFreeString 函式 來釋放它。

傳回值

C++

傳回值為 HRESULT。 值S_OK表示成功。 當 ProviderType 屬性所指示的屬性類型沒有更多 CSP 時,就會傳回值ERROR_NO_MORE_ITEMS。

VB

傳回值是 String 變數,其中包含 CSP 的名稱。 如果發生錯誤,或沒有其他專案時,就會引發例外狀況。

備註

如果未設定 ProviderType 屬性值,則會使用在登錄中設定的 ProviderType 預設值 (通常PROV_RSA_FULL) 。

enumProviders 方法會呼叫 CryptEnumProviders 函式。

範例

BSTR       bstrProvName = NULL;
DWORD      nProv;
int        j;
HRESULT    hr;

// array of CSP provider types (see Wincrypt.h)
DWORD      nProvType[] = { PROV_RSA_FULL,      
                           PROV_RSA_SIG,       
                           // list shortened for brevity
                           //...
                           PROV_STT_ISS };

// Loop, for each Prov Type.
for (j = 0; j < (sizeof(nProvType)/sizeof(DWORD)); j++)
{
    nProv = 0;
    
    // pEnroll is previously instantiated ICEnroll interface pointer
    hr = pEnroll->put_ProviderType( nProvType[j] );
    if ( FAILED(hr))
    {
        printf("Failed put_ProviderType - %x\n", hr);
        goto error;
    }
    // Enumerate the CSPs of this type.
    while ( S_OK == ( hr = pEnroll->enumProviders(nProv,
                                                  0,
                                                  &bstrProvName)))
    {
        printf("Provider %ws (type %d )\n", bstrProvName, 
            nProvType[j] );
        nProv++;
        if ( bstrProvName )
        {
            SysFreeString( bstrProvName );
            bstrProvName = NULL;
        }
    }

    // Print message if provider type does not have any CSPs.
    if ( 0 == nProv )
       printf("There were no CSPs of type %d\n", dwType );
}

error:
// Clean up resources, and so on.
if ( bstrProvName )
    SysFreeString( bstrProvName );

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 xenroll.h
程式庫 Uuid.lib
Dll Xenroll.dll

另請參閱

CEnroll

ICEnroll

ICEnroll2

ICEnroll3

ICEnroll4

ProviderType