Auf Englisch lesen

Freigeben über


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.

Syntax

typedef struct LdapReferralCallback {
  ULONG                 SizeOfCallbacks;
  QUERYFORCONNECTION    *QueryForConnection;
  NOTIFYOFNEWCONNECTION *NotifyRoutine;
  DEREFERENCECONNECTION *DereferenceRoutine;
} LDAP_REFERRAL_CALLBACK, *PLDAP_REFERRAL_CALLBACK;

Member

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.

Hinweise

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.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Kopfzeile winldap.h

Weitere Informationen

Datenstrukturen

ldap_set_option