Freigeben über


NPI_PROVIDER_ATTACH_CLIENT_FN Rückruffunktion (netioddk.h)

Die ProviderAttachClient Callbackfunktion eines Anbietermoduls fügt das Anbietermodul an ein Clientmodul an.

Syntax

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
)
{...}

Parameter

[in] NmrBindingHandle

Ein Handle, das vom NMR verwendet wird, um die Bindung zwischen dem Clientmodul und dem Anbietermodul darzustellen.

[in] ProviderContext

Ein Zeiger auf den Registrierungskontext des Anbietermoduls. Das Anbietermodul übergibt diesen Zeiger an den NMR, wenn er die NmrRegisterProvider--Funktion aufruft, um sich bei nmR zu registrieren.

[in] ClientRegistrationInstance

Ein Zeiger auf einen NPI_REGISTRATION_INSTANCE Struktur. Diese Struktur enthält die Registrierungsdaten des Clientmoduls.

[in] ClientBindingContext

Ein Zeiger auf den Clientmodulkontext für die Bindung zwischen dem Clientmodul und dem Anbietermodul. Das Clientmodul verwendet diesen Kontext, um den Status der Bindung nachzuverfolgen. Der Inhalt des Bindungskontexts des Clientmoduls ist für das Anbietermodul nicht transparent. Das Anbietermodul übergibt diesen Zeiger an das Clientmodul, wenn er einen der NPI- Rückruffunktionen des Clientmoduls aufruft, die den Bindungskontext des Clientmoduls erfordern.

[in] ClientDispatch

Ein Zeiger auf eine Konstante, die die Verteilertabelle NPI- Rückruffunktionen für das Clientmodul enthält. Der Inhalt der Struktur ist NPI-spezifisch. Wenn der NPI keine Clientteiltabellenstruktur definiert, ist dieser Zeiger NULL-.

[out] ProviderBindingContext

Ein Zeiger auf eine Variable, in der das Anbietermodul einen Zeiger für die Bindung zwischen dem Clientmodul und dem Anbietermodul speichert. Das Anbietermodul verwendet diesen Kontext, um den Status der Bindung nachzuverfolgen. Der Inhalt des Bindungskontexts des Anbietermoduls ist für das Clientmodul nicht transparent. Das Clientmodul übergibt diesen Zeiger an das Anbietermodul, wenn es eines der NPI- Funktionen des Anbietermoduls aufruft, die den Bindungskontext des Anbietermoduls erfordern. Das Anbietermodul muss sicherstellen, dass dieser Kontext gültig bleibt und sich im Arbeitsspeicher befindet, solange das Clientmodul an das Anbietermodul angefügt ist.

[out] ProviderDispatch

Ein Zeiger auf eine Variable, in der das Anbietermodul einen Zeiger auf eine Konstantenstruktur speichert, die die Verteilertabelle NPI--Funktionen für das Anbietermodul enthält. Das Anbietermodul muss sicherstellen, dass diese Struktur gültig bleibt und sich im Arbeitsspeicher befindet, solange das Clientmodul an das Anbietermodul angefügt ist. Der Inhalt der Struktur ist NPI-spezifisch.

Rückgabewert

Die ProviderAttachClient- Rückruffunktion eines Anbietermoduls gibt einen der folgenden NTSTATUS-Codes zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS
Das Anbietermodul wurde erfolgreich an das Clientmodul angefügt.
STATUS_NOINTERFACE
Das Anbietermodul wurde nicht an das Clientmodul angefügt.
Andere Statuscodes
Fehler.

Bemerkungen

Die NMR ruft die ProviderAttachClient Rückruffunktion eines Anbietermoduls auf, wenn ein Clientmodul den NmrClientAttachProvider-Funktion mit einem Handle aufruft, das eine Bindung zwischen dem Clientmodul und dem Anbietermodul darstellt.

Ein Anbietermodul kann die Registrierungsdaten des Clientmoduls untersuchen. Diese Daten befinden sich in der Struktur, auf die der ClientRegistrationInstance Parameter verweist. Das Anbietermodul verwendet diese Daten, um zu bestimmen, ob es an das Clientmodul angefügt wird:

  • Wenn das Anbietermodul feststellt, dass es an das Clientmodul angefügt wird, muss die ProviderAttachClient- Rückruffunktion Folgendes ausführen:
    1. Speichern Sie die im ClientBindingContext übergebenen Zeiger und Parameter "ClientDispatch", sodass das Anbietermodul Aufrufe an die NPI--Funktionen des Clientmoduls ausführen kann.
    2. Speichern Sie das handle, das im NmrBindingHandle Parameter übergeben wird. Das Anbietermodul übergibt dieses Handle als Parameter an die NmrProviderDetachClientComplete Funktion, wenn sie vom Clientmodul getrennt wird.
    3. Legen Sie den parameter ProviderBindingContext so fest, dass er auf die Bindungskontextstruktur des Anbietermoduls für die Bindung zwischen dem Clientmodul und dem Anbietermodul verweist.
    4. Legen Sie den parameter ProviderDispatch so fest, dass er auf eine Struktur verweist, die die Verteilertabelle des Anbietermoduls NPI--Funktionen enthält.
    5. Gibt STATUS_SUCCESS zurück.
  • Wenn das Anbietermodul feststellt, dass es nicht an das Clientmodul angefügt wird, muss die ProviderAttachClient- Rückruffunktion STATUS_NOINTERFACE zurückgeben.
Wenn das Anbietermodul an das Clientmodul anfügt und ihm dynamisch Speicher für den Bindungskontext zugeordnet wird, sollte es den zugeordneten Speicher freigeben, wenn nmR das Anbietermodul aufruft. ProviderCleanupBindingContext Rückruffunktion, nachdem das Clientmodul und das Anbietermodul voneinander getrennt sind.

Die NMR ruft die ProviderAttachClient Rückruffunktion eines Anbietermoduls bei IRQL = PASSIVE_LEVEL auf.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform- Fenster
Header- netioddk.h (include Wsk.h)
IRQL- PASSIVE_LEVEL

Siehe auch

NPI_PROVIDER_CHARACTERISTICS

NPI_REGISTRATION_INSTANCE

NmrClientAttachProvider

NmrProviderDetachClientComplete

NmrRegisterProvider-

ProviderCleanupBindingContext-

ProviderDetachClient-