共用方式為


NCryptEnumKeys 函式 (ncrypt.h)

NCryptEnumKeys 函式會取得提供者所儲存的密鑰名稱。

語法

SECURITY_STATUS NCryptEnumKeys(
  [in]           NCRYPT_PROV_HANDLE hProvider,
  [in, optional] LPCWSTR            pszScope,
  [out]          NCryptKeyName      **ppKeyName,
  [in, out]      PVOID              *ppEnumState,
  [in]           DWORD              dwFlags
);

參數

[in] hProvider

要列舉金鑰的金鑰儲存提供者句柄。 此句柄是使用 NCryptOpenStorageProvider 函式取得。

[in, optional] pszScope

此參數目前未使用,而且必須是 NULL

[out] ppKeyName

接收所擷取索引鍵名稱之 NCryptKeyName 結構的指標位址。 當應用程式使用此記憶體完成時,請呼叫 NCryptFreeBuffer 函式來釋放它。

[in, out] ppEnumState

VOID 指標的位址,這個指標會接收此函式後續呼叫中使用的列舉狀態資訊。 此資訊只有金鑰儲存提供者的意義,而且對呼叫端不透明。 金鑰儲存提供者會使用此資訊來判斷列舉中的下一個專案。 如果此參數所指向的變數包含 NULL,則會從頭開始列舉。

不再需要此記憶體時,必須將這個指標傳遞至 NCryptFreeBuffer 函式,以釋放它。

[in] dwFlags

修改函式行為的旗標。 這可以是零或下列一或多個值的組合。

意義
NCRYPT_MACHINE_KEY_FLAG
列舉本機計算機的索引鍵。 如果這個旗標不存在,則會列舉目前的使用者密鑰。
NCRYPT_SILENT_FLAG
要求金鑰服務提供者 (KSP) 不會顯示任何使用者介面。 如果提供者必須顯示要運作的UI,呼叫會失敗,而 KSP 應該將NTE_SILENT_CONTEXT錯誤碼設定為最後 一個 錯誤。

傳回值

傳回狀態代碼,指出函式的成功或失敗。

可能的傳回碼包括但不限於下列各項。

傳回碼 Description
ERROR_SUCCESS
函式成功。
NTE_BAD_FLAGS
dwFlags 參數包含無效的值。
NTE_INVALID_HANDLE
hProvider 參數無效。
NTE_INVALID_PARAMETER
一或多個參數無效。
NTE_NO_MEMORY
發生記憶體配置失敗。
NTE_NO_MORE_ITEMS
已達到列舉的結尾。
NTE_SILENT_CONTEXT
dwFlags 參數包含NCRYPT_SILENT_FLAG旗標,但列舉的索引鍵需要用戶互動。

備註

此函式每次呼叫時只會擷取一個專案。 列舉的狀態會儲存在 ppEnumState 參數所指向的變數中,因此必須在呼叫此函式之間保留此狀態。 擷取提供者所儲存的最後一個密鑰時,此函式會在下次呼叫時傳回 NTE_NO_MORE_ITEMS 。 若要開始列舉,請將 ppEnumState 參數指向的變數設定為 NULL、釋放 ppKeyName 參數所指向的記憶體,如果不是 NULL,請再次呼叫此函式。

服務不得從它的 StartService 函式呼叫此函式。 如果服務從它的 StartService 函式呼叫此函式,可能會發生死結,而且服務可能會停止回應。

規格需求

需求
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 ncrypt.h
程式庫 Ncrypt.lib
Dll Ncrypt.dll