LDAP_REFERRAL_CALLBACK構造体 (winldap.h)
LDAP_REFERRAL_CALLBACK構造体は、接続の外部キャッシュを実装するために使用されます。 この構造は、紹介を追跡する場合にのみ使用されます。
構文
typedef struct LdapReferralCallback {
ULONG SizeOfCallbacks;
QUERYFORCONNECTION *QueryForConnection;
NOTIFYOFNEWCONNECTION *NotifyRoutine;
DEREFERENCECONNECTION *DereferenceRoutine;
} LDAP_REFERRAL_CALLBACK, *PLDAP_REFERRAL_CALLBACK;
メンバー
SizeOfCallbacks
コールバックに必要なメモリの量。 このフィールドを に設定します sizeof(LDAP_REFERRAL_CALLBACK)
。
QueryForConnection
キャッシュされた接続が使用可能かどうかを判断するためのコールバック関数へのポインター。 詳細については、「解説」を参照してください。
NotifyRoutine
操作の完了後に新しい接続をキャッシュするか破棄するかを決定するコールバック関数へのポインター。 詳細については、「解説」を参照してください。
DereferenceRoutine
使用されていない接続を逆参照するためのコールバック関数へのポインター。 詳細については、「解説」を参照してください。
注釈
LDAP_REFERRAL_CALLBACK構造体を使用して、接続をキャッシュするためのメカニズムを実装します。 構造体には、クライアント コードに実装する 3 つのコールバック関数が含まれています。
QUERYFORCONNECTION: 接続が使用可能な場合、この関数は ConnectionToUse で使用する接続へのポインターを返す必要があります。 使用できる接続がない場合、関数は ConnectionToUse を NULL に設定する必要があります。 このコールバック関数のシグネチャは次のとおりです。
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: 参照を追跡する過程で新しい接続が作成された場合、ランタイムはこの関数を呼び出します。 接続をキャッシュする必要がない場合、この関数は FALSE を 返す必要があります。 FALSE が返されると、操作が完了すると接続が破棄されます。 接続の所有権を取得し、接続がキャッシュされる場合、関数は TRUE を 返す必要があります。 作成された新しい接続は、要求が開始されたプライマリ接続から現在のコールバックを継承していることに注意してください。 この関数のシグネチャは です。
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: LDAP ランタイムは、この関数を呼び出して、不要になった接続を逆参照します。 接続は、 QueryForConnection の正常な呼び出しまたは NotifyOfNewConnection からの呼び出しから行われる可能性があります。 呼び出しが成功した場合、関数はLDAP_SUCCESSを返す必要があります。ただし、現在、ランタイムは戻り値を無視します。 この関数のシグネチャは次のとおりです。
typedef ULONG (_cdecl DEREFERENCECONNECTION)
(
PLDAP PrimaryConnection,
PLDAP ConnectionToDereference
);
コールバックを使用してキャッシュされた接続を取得するようにセッションを構成するには、 ldap_set_option (conn、LDAP_OPT_REFERRAL_CALLBACK、&referralRoutines) を呼び出します。 ここで、referralRoutines はルーチンを含む LDAP_REFERRAL_CALLBACK 構造体のアドレスです。 アドレスは NULL である可能性があります。この場合、LDAP ランタイムは呼び出しを行いません。
上記の 3 つの関数のパラメーターの説明は次のとおりです。
-
PrimaryConnection
操作が最初に実行された LDAP 接続ハンドル。 たとえば、ldap_search、ldap_result、ldap_addなどの呼び出しに渡されるハンドル。
-
ReferralFromConnection
現在追跡されている紹介を送信した接続。 紹介は、複数の "ホップ" にわたって追跡できます。 たとえば、紹介は元のサーバーから 2 番目のサーバーに、次に 2 番目のサーバーが 3 番目のサーバーに対して操作を参照できるなどです。 ReferralFromConnection が PrimaryConnection と同じ場合、最初の "ホップ" が追跡されます (元のサーバーから送信された紹介)。
-
NewDN
参照されるオブジェクトの DN を含む、null で終わるワイド文字列へのポインター。
-
HostName
参照されるサーバーの名前を含む null で終わる文字列へのポインター。は、接続を確立する必要があるサーバーです。
- PortNumber 接続する必要がある参照先サーバー上のポート。
-
SecAuthIdentity
紹介を追跡するときに使用される資格情報の SEC_WINNT_AUTH_IDENTITY または SEC_WINNT_AUTH_IDENTITY_EX 。ユーザーの既定の資格情報が使用されている場合は NULL 。
-
CurrentUserToken/CurrentUser
接続が必要なユーザーの AuthenticationID LUID。 SecAuthIdentity が NULL の場合は、このパラメーターを使用してユーザーを識別します。
-
NewConnection
新しい接続の存在を読み上げるのに使用されます。
-
ErrorCodeFromBind
新しく作成された接続 (NewConnection) にバインドしようとすると、ldap_bind_sから返されるエラー コード。
-
ConnectionToDereference
逆参照する接続。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
Header | winldap.h |