NPI_PROVIDER_ATTACH_CLIENT_FN Rückruffunktion (netioddk.h)
Die ProviderAttachClient-Rückruffunktion 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 es die NmrRegisterProvider-Funktion aufruft, um sich beim NMR zu registrieren.
[in] ClientRegistrationInstance
Ein Zeiger auf eine NPI_REGISTRATION_INSTANCE-Struktur . Diese Struktur enthält die Registrierungsdaten des Clientmoduls.
[in] ClientBindingContext
Ein Zeiger auf den Kontext des Clientmoduls 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 undurchsichtig. Das Anbietermodul übergibt diesen Zeiger an das Clientmodul, wenn es eine der NPI-Rückruffunktionen des Clientmoduls aufruft, die den Bindungskontext des Clientmoduls erfordern.
[in] ClientDispatch
Ein Zeiger auf eine konstante Struktur, die die Dispatchtabelle der NPI-Rückruffunktionen für das Clientmodul enthält. Der Inhalt der Struktur ist NPI-spezifisch. Wenn der NPI keine Clientverteilungstabellenstruktur definiert, ist dieser Zeiger NULL.
[out] ProviderBindingContext
Ein Zeiger auf eine Variable, in die das Anbietermodul einen Zeiger auf seinen Kontext 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 undurchsichtig. Das Clientmodul übergibt diesen Zeiger an das Anbietermodul, wenn es eine 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 die das Anbietermodul einen Zeiger auf eine konstante Struktur speichert, die die Dispatchtabelle der 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 |
---|---|
|
Das Anbietermodul wurde erfolgreich an das Clientmodul angefügt. |
|
Das Anbietermodul wurde nicht an das Clientmodul angefügt. |
|
Ein Fehler ist aufgetreten. |
Hinweise
Der NMR ruft die ProviderAttachClient-Rückruffunktion eines Anbietermoduls auf, wenn ein Clientmodul die 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 Rückruffunktion ProviderAttachClient die folgenden Aktionen ausführen:
- Speichern Sie die in den Parametern ClientBindingContext und ClientDispatch übergebenen Zeiger, damit das Anbietermodul Aufrufe der NPI-Funktionen des Clientmoduls durchführen kann.
- Speichern Sie das im NmrBindingHandle-Parameter übergebene Handle. Das Anbietermodul übergibt dieses Handle als Parameter an die NmrProviderDetachClientComplete-Funktion , wenn sie vom Clientmodul getrennt wird.
- 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.
- Legen Sie den ProviderDispatch-Parameter so fest, dass er auf eine Struktur verweist, die die Dispatchtabelle des Anbietermoduls der NPI-Funktionen enthält.
- 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.
Der NMR ruft die ProviderAttachClient-Rückruffunktion eines Anbietermoduls unter IRQL = PASSIVE_LEVEL auf.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme. |
Zielplattform | Windows |
Kopfzeile | netioddk.h (include Wsk.h) |
IRQL | PASSIVE_LEVEL |