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
修改函式行為的旗標。 這可以是零或下列一或多個值的組合。
值 | 意義 |
---|---|
|
列舉本機計算機的索引鍵。 如果這個旗標不存在,則會列舉目前的使用者密鑰。 |
|
要求金鑰服務提供者 (KSP) 不會顯示任何使用者介面。 如果提供者必須顯示要運作的UI,呼叫會失敗,而 KSP 應該將NTE_SILENT_CONTEXT錯誤碼設定為最後 一個 錯誤。 |
傳回值
傳回狀態代碼,指出函式的成功或失敗。
可能的傳回碼包括但不限於下列各項。
傳回碼 | Description |
---|---|
|
函式成功。 |
|
dwFlags 參數包含無效的值。 |
|
hProvider 參數無效。 |
|
一或多個參數無效。 |
|
發生記憶體配置失敗。 |
|
已達到列舉的結尾。 |
|
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 |