BCryptEnumContextFunctions-Funktion (bcrypt.h)
Die BCryptEnumContextFunctions-Funktion ruft die kryptografischen Funktionen für einen Kontext in der angegebenen Konfigurationstabelle ab.
Syntax
NTSTATUS BCryptEnumContextFunctions(
[in] ULONG dwTable,
[in] LPCWSTR pszContext,
[in] ULONG dwInterface,
[in, out] ULONG *pcbBuffer,
[in, out] PCRYPT_CONTEXT_FUNCTIONS *ppBuffer
);
Parameter
[in] dwTable
Gibt die Konfigurationstabelle an, aus der die Kontextfunktionen abgerufen werden sollen. Dies kann einer der folgenden Werte sein.
Wert | Bedeutung |
---|---|
|
Rufen Sie die Kontextfunktionen aus der Konfigurationstabelle des lokalen Computers ab. |
|
Dieser Wert steht nicht zur Verwendung zur Verfügung. |
[in] pszContext
Ein Zeiger auf eine Unicode-Zeichenfolge mit Null-Beendigung, die den Bezeichner des Kontexts enthält, für den die Funktionen aufgelistet werden sollen.
[in] dwInterface
Gibt die kryptografische Schnittstelle an, für die die Funktionen abgerufen werden sollen. Dies kann einer der folgenden Werte sein.
[in, out] pcbBuffer
Die Adresse einer ULONG-Variablen , die bei einem Eintrag die Größe des Puffers in Bytes enthält, auf den ppBuffer verweist. Wenn diese Größe nicht groß genug ist, um den Satz von Kontextbezeichnern aufzunehmen, schlägt diese Funktion mit STATUS_BUFFER_TOO_SMALL fehl.
Nachdem diese Funktion zurückgegeben wurde, enthält dieser Wert die Anzahl der Bytes, die in den ppBuffer-Puffer kopiert wurden.
[in, out] ppBuffer
Die Adresse eines Zeigers auf eine CRYPT_CONTEXT_FUNCTIONS Struktur, die den Satz von Kontextfunktionen empfängt, die von dieser Funktion abgerufen werden. Der Wert, auf den der pcbBuffer-Parameter verweist, enthält die Größe dieses Puffers.
Wenn der Wert, auf den dieser Parameter verweist, NULL ist, weist diese Funktion den erforderlichen Arbeitsspeicher zu. Dieser Speicher muss freigegeben werden, wenn er nicht mehr benötigt wird, indem dieser Zeiger an die BCryptFreeBuffer-Funktion übergeben wird.
Wenn dieser Parameter NULL ist, platziert diese Funktion die erforderliche Größe in Bytes in der Variablen, auf die der pcbBuffer-Parameter verweist, und gibt STATUS_BUFFER_TOO_SMALL zurück.
Rückgabewert
Gibt einen status Code zurück, der den Erfolg oder Fehler der Funktion angibt.
Mögliche Rückgabecodes umfassen folgendes, sind aber nicht darauf beschränkt.
Rückgabecode | Beschreibung |
---|---|
|
Die Funktion war erfolgreich. |
|
Der ppBuffer-Parameter ist nicht NULL, und der Wert, auf den der pcbBuffer-Parameter verweist, ist nicht groß genug, um den Satz von Kontexten zu enthalten. |
|
Mindestens ein Parameter ist ungültig. |
|
Ein Fehler bei der Speicherzuordnung ist aufgetreten. |
|
Es wurden keine Kontextfunktionen gefunden, die den angegebenen Kriterien entsprechen. |
Hinweise
BCryptEnumContextFunctions kann nur im Benutzermodus aufgerufen werden.
Beispiele
Das folgende Beispiel zeigt, wie Sie die BCryptEnumContextFunctions-Funktion verwenden, um die Schlüsselspeicherfunktionen für alle Kontexte in der Konfigurationstabelle für den lokalen Computer aufzulisten.
#include <windows.h>
#include <stdio.h>
#include <Bcrypt.h>
#pragma comment(lib, "Bcrypt.lib")
#ifndef NT_SUCCESS
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#endif
NTSTATUS EnumContextFunctions()
{
NTSTATUS status;
ULONG uSize = 0;
PCRYPT_CONTEXTS pContexts = NULL;
// Get the contexts for the local machine.
// CNG will allocate the memory for us.
status = BCryptEnumContexts(CRYPT_LOCAL, &uSize, &pContexts);
if(NT_SUCCESS(status))
{
// Enumerate the context identifiers.
for(ULONG uContextIndex = 0;
uContextIndex < pContexts->cContexts;
uContextIndex++)
{
wprintf(L"Context functions for %s:\n",
pContexts->rgpszContexts[uContextIndex]);
// Get the functions for this context.
// CNG will allocate the memory for us.
PCRYPT_CONTEXT_FUNCTIONS pContextFunctions = NULL;
status = BCryptEnumContextFunctions(
CRYPT_LOCAL,
pContexts->rgpszContexts[uContextIndex],
NCRYPT_SCHANNEL_INTERFACE,
&uSize,
&pContextFunctions);
if(NT_SUCCESS(status))
{
// Enumerate the functions.
for(ULONG i = 0;
i < pContextFunctions->cFunctions;
i++)
{
wprintf(L"\t%s\n",
pContextFunctions->rgpszFunctions[i]);
}
// Free the context functions buffer.
BCryptFreeBuffer(pContextFunctions);
}
}
// Free the contexts buffer.
BCryptFreeBuffer(pContexts);
}
return status;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | bcrypt.h |
Bibliothek | Bcrypt.lib |
DLL | Bcrypt.dll |