LDAP_REFERRAL_CALLBACK-Struktur (winldap.h)
Die LDAP_REFERRAL_CALLBACK-Struktur wird verwendet, um das externe Zwischenspeichern von Verbindungen zu implementieren. Diese Struktur wird nur beim Nachverfolgen von Empfehlungen verwendet.
typedef struct LdapReferralCallback {
ULONG SizeOfCallbacks;
QUERYFORCONNECTION *QueryForConnection;
NOTIFYOFNEWCONNECTION *NotifyRoutine;
DEREFERENCECONNECTION *DereferenceRoutine;
} LDAP_REFERRAL_CALLBACK, *PLDAP_REFERRAL_CALLBACK;
SizeOfCallbacks
Die für den Rückruf erforderliche Arbeitsspeichermenge. Legen Sie dieses Feld auf fest sizeof(LDAP_REFERRAL_CALLBACK)
.
QueryForConnection
Ein Zeiger auf eine Rückruffunktion, um zu bestimmen, ob eine zwischengespeicherte Verbindung verfügbar ist. Weitere Informationen finden Sie in den Hinweisen.
NotifyRoutine
Ein Zeiger auf eine Rückruffunktion, die bestimmt, ob eine neue Verbindung nach Abschluss des Vorgangs zwischengespeichert oder zerstört wird. Weitere Informationen finden Sie in den Hinweisen.
DereferenceRoutine
Ein Zeiger auf eine Rückruffunktion zum Dereferenzieren einer verbindung, die nicht verwendet wird. Weitere Informationen finden Sie in den Hinweisen.
Verwenden Sie die LDAP_REFERRAL_CALLBACK-Struktur , um einen Mechanismus zum Zwischenspeichern von Verbindungen zu implementieren. Die -Struktur enthält drei Rückruffunktionen, die Sie in Ihrem Clientcode implementieren.
QUERYFORCONNECTION: Wenn eine Verbindung verfügbar ist, sollte diese Funktion einen Zeiger auf die Verbindung zurückgeben, die in ConnectionToUse verwendet werden soll. Wenn keine Verbindung verfügbar ist, sollte die Funktion ConnectionToUse auf NULL festlegen. Die Signatur für diese Rückruffunktion lautet wie folgt.
typedef ULONG (_cdecl QUERYFORCONNECTION)(
PLDAP PrimaryConnection,
PLDAP ReferralFromConnection,
PWCHAR NewDN,
PCHAR HostName,
ULONG PortNumber,
PVOID SecAuthIdentity, // If NULL, use CurrentUser below
PVOID CurrentUserToken, // pointer to current user LUID.
PLDAP *ConnectionToUse
);
NOTIFYOFNEWCONNECTION: Die Laufzeit ruft diese Funktion auf, wenn im Zuge der Verfolgung einer Empfehlung eine neue Verbindung erstellt wurde. Diese Funktion sollte FALSE zurückgeben, wenn die Verbindung nicht zwischengespeichert werden muss. Wenn FALSE zurückgegeben wird, wird die Verbindung nach Abschluss des Vorgangs zerstört. Die Funktion sollte TRUE zurückgeben, wenn sie den Besitz der Verbindung übernommen hat und die Verbindung zwischengespeichert wird. Beachten Sie, dass alle neu erstellten Verbindungen die aktuellen Rückrufe von der primären Verbindung erben, für die die Anforderung initiiert wurde. Die Signatur für diese Funktion lautet.
typedef BOOLEAN (_cdecl NOTIFYOFNEWCONNECTION)
(
PLDAP PrimaryConnection,
PLDAP ReferralFromConnection,
PWCHAR NewDN,
PCHAR HostName,
PLDAP NewConnection,
ULONG PortNumber,
PVOID SecAuthIdentity, // If null, use CurrentUser below.
PVOID CurrentUser, // Pointer to current user LUID.
ULONG ErrorCodeFromBind // If nonzero, bind to server failed.
);
DEREFERENCECONNECTION: Die LDAP-Laufzeit ruft diese Funktion auf, um eine Verbindung zu dereferenzieren, die nicht mehr benötigt wird. Die Verbindung ist möglicherweise aus einem erfolgreichen Aufruf von QueryForConnection oder von NotifyOfNewConnection entstanden. Die Funktion sollte LDAP_SUCCESS zurückgeben, wenn der Aufruf erfolgreich ist. derzeit ignoriert die Laufzeit jedoch den Rückgabewert. Die Signatur für diese Funktion lautet wie folgt.
typedef ULONG (_cdecl DEREFERENCECONNECTION)
(
PLDAP PrimaryConnection,
PLDAP ConnectionToDereference
);
Um eine Sitzung so zu konfigurieren, dass Rückrufe zum Abrufen einer zwischengespeicherten Verbindung verwendet werden, rufen Sie ldap_set_option (conn, LDAP_OPT_REFERRAL_CALLBACK, &referralRoutines) auf, wobei referralRoutines die Adresse der LDAP_REFERRAL_CALLBACK-Struktur ist, die Ihre Routinen enthält. Die Adressen können NULL sein. In diesem Fall führt die LDAP-Laufzeit die Aufrufe nicht durch.
Die Parameterbeschreibungen für die vorherigen drei Funktionen sind wie folgt:
-
PrimaryConnection
Das LDAP-Verbindungshandle, für das der Vorgang ursprünglich ausgeführt wurde. Beispielsweise wird das Handle an einen Aufruf von ldap_search, ldap_result, ldap_add usw. übergeben.
-
ReferralFromConnection
Die Verbindung, die die Empfehlung gesendet hat, die derzeit nachverfolgt wird. Empfehlungen können über mehrere Hops hinweg nachverfolgt werden. Beispielsweise kann die Empfehlung vom ursprünglichen Server auf einen zweiten Server erfolgen, dann kann der zweite Server den Vorgang auf einen dritten Server verweisen usw. Wenn ReferralFromConnectionprimaryConnection entspricht, wird der erste "Hop" nachverfolgt (eine Empfehlung, die vom ursprünglichen Server gesendet wurde).
-
NewDN
Zeiger auf eine breite, NULL-endende Zeichenfolge, die den DN des verwiesenen Objekts enthält.
-
HostName
Zeiger auf eine NULL-endende Zeichenfolge, die den Namen des Servers enthält, auf den verwiesen wird; Dies ist der Server, mit dem eine Verbindung hergestellt werden muss.
- Portnumber Port auf dem Server, auf den verwiesen wird, mit dem eine Verbindung hergestellt werden muss.
-
SecAuthIdentity
Die SEC_WINNT_AUTH_IDENTITY oder SEC_WINNT_AUTH_IDENTITY_EX für die Anmeldeinformationen, die beim Nachverfolgen der Empfehlung verwendet werden, oder null , wenn die Standardanmeldeinformationen des Benutzers verwendet werden.
-
CurrentUserToken/CurrentUser
Die AuthenticationID-LUID des Benutzers, für den eine Verbindung erforderlich ist. Wenn SecAuthIdentityNULL ist, verwenden Sie diesen Parameter, um den Benutzer zu identifizieren.
-
NewConnection
Wird verwendet, um das Vorhandensein der neuen Verbindung anzukündigen.
-
ErrorCodeFromBind
Fehlercode, der von ldap_bind_s zurückgegeben wird, wenn versucht wird, eine Bindung an die neu erstellte Verbindung (NewConnection) herzustellen.
-
ConnectionToDereference
Die zu dereferenzierende Verbindung.
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista |
Unterstützte Mindestversion (Server) | Windows Server 2008 |
Kopfzeile | winldap.h |