NPI_PROVIDER_ATTACH_CLIENT_FN funzione di callback (netioddk.h)

La funzione di callback ProviderAttachClient di un modulo provider collega il modulo provider a un modulo client.

Sintassi

NPI_PROVIDER_ATTACH_CLIENT_FN NpiProviderAttachClientFn;

NTSTATUS NpiProviderAttachClientFn(
  [in]  HANDLE NmrBindingHandle,
  [in]  PVOID ProviderContext,
  [in]  PNPI_REGISTRATION_INSTANCE ClientRegistrationInstance,
  [in]  PVOID ClientBindingContext,
  [in]  const VOID *ClientDispatch,
  [out] PVOID *ProviderBindingContext,
  [out] const VOID **ProviderDispatch
)
{...}

Parametri

[in] NmrBindingHandle

Handle usato da NMR per rappresentare l'associazione tra il modulo client e il modulo del provider.

[in] ProviderContext

Puntatore al contesto di registrazione del modulo del provider. Il modulo provider passa questo puntatore al NMR quando chiama la funzione NmrRegisterProvider per registrarsi con nmR.

[in] ClientRegistrationInstance

Puntatore a un oggetto NPI_REGISTRATION_INSTANCE struttura. Questa struttura contiene i dati di registrazione del modulo client.

[in] ClientBindingContext

Puntatore al contesto del modulo client per l'associazione tra il modulo client e il modulo del provider. Il modulo client usa questo contesto per tenere traccia dello stato dell'associazione. Il contenuto del contesto di associazione del modulo client è opaco al modulo del provider. Il modulo provider passa questo puntatore al modulo client ogni volta che chiama una delle funzioni di callback npi del modulo client che richiedono il contesto di associazione del modulo client.

[in] ClientDispatch

Puntatore a una struttura costante che contiene la tabella dispatch delle funzioni di callback NPI per il modulo client. Il contenuto della struttura è specifico di NPI. Se il server dei criteri di rete non definisce una struttura di tabella dispatch client, questo puntatore è NULL.

[out] ProviderBindingContext

Puntatore a una variabile in cui il modulo del provider archivierà un puntatore al contesto per l'associazione tra il modulo client e il modulo del provider. Il modulo provider usa questo contesto per tenere traccia dello stato dell'associazione. Il contenuto del contesto di associazione del modulo del provider è opaco al modulo client. Il modulo client passa questo puntatore al modulo del provider ogni volta che chiama una delle funzioni NPI del modulo del provider che richiedono il contesto di associazione del modulo provider. Il modulo provider deve assicurarsi che questo contesto rimanga valido e residente in memoria, purché il modulo client sia collegato al modulo del provider.

[out] ProviderDispatch

Puntatore a una variabile in cui il modulo provider archivierà un puntatore a una struttura costante contenente la tabella dispatch delle funzioni NPI per il modulo del provider. Il modulo provider deve assicurarsi che questa struttura rimanga valida e residente in memoria, purché il modulo client sia collegato al modulo del provider. Il contenuto della struttura è specifico di NPI.

Valore restituito

La funzione di callback ProviderAttachClient di un modulo provider restituisce uno dei codici NTSTATUS seguenti:

Codice restituito Descrizione
STATUS_SUCCESS
Il modulo provider è stato collegato correttamente al modulo client.
STATUS_NOINTERFACE
Il modulo del provider non è stato collegato al modulo client.
Altri codici di stato
Si è verificato un errore.

Commenti

NmR chiama la funzione di callback ProviderAttachClient di un modulo provider ogni volta che un modulo client chiama la funzione NmrClientAttachProvider con un handle che rappresenta un'associazione tra il modulo client e il modulo del provider.

Un modulo del provider può esaminare i dati di registrazione del modulo client. Questi dati si trovano nella struttura a cui punta il parametro ClientRegistrationInstance . Il modulo provider usa questi dati per determinare se verrà collegato al modulo client:

  • Se il modulo del provider determina che verrà collegato al modulo client, la funzione di callback ProviderAttachClient deve eseguire le operazioni seguenti:
    1. Salvare i puntatori passati nei parametri ClientBindingContext e ClientDispatch in modo che il modulo provider possa effettuare chiamate alle funzioni NPI del modulo client.
    2. Salvare l'handle passato nel parametro NmrBindingHandle . Il modulo provider passa questo handle come parametro a Funzione NmrProviderDetachClientComplete quando si scollega dal modulo client.
    3. Impostare il parametro ProviderBindingContext in modo che punti alla struttura del contesto di associazione del modulo del provider per l'associazione tra il modulo client e il modulo del provider.
    4. Impostare il parametro ProviderDispatch in modo che punti a una struttura contenente la tabella dispatch del modulo provider delle funzioni NPI .
    5. Restituisce STATUS_SUCCESS.
  • Se il modulo del provider determina che non verrà collegato al modulo client, la funzione di callback ProviderAttachClient deve restituire STATUS_NOINTERFACE.
Se il modulo del provider si connette al modulo client e alloca in modo dinamico la memoria per il contesto di associazione, deve liberare tale memoria allocata quando nmR chiama il modulo del providerFunzione di callback ProviderCleanupBindingContext dopo che il modulo client e il modulo del provider vengono scollegati l'uno dall'altro.

NmR chiama la funzione di callback ProviderAttachClient di un modulo provider in IRQL = PASSIVE_LEVEL.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Windows
Intestazione netioddk.h (include Wsk.h)
IRQL PASSIVE_LEVEL

Vedi anche

NPI_PROVIDER_CHARACTERISTICS

NPI_REGISTRATION_INSTANCE

NmrClientAttachProvider

NmrProviderDetachClientComplete

NmrRegisterProvider

ProviderCleanupBindingContext

ProviderDetachClient