共用方式為


NPI_PROVIDER_ATTACH_CLIENT_FN回呼函式 (netioddk.h)

提供者模組的 ProviderAttachClient 回呼函式會將提供者模組附加至用戶端模組。

語法

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

參數

[in] NmrBindingHandle

NMR 用來表示用戶端模組與提供者模組之間系結的句柄。

[in] ProviderContext

提供者模組註冊內容的指標。 提供者模組會在呼叫 nmrRegisterProvider 函式時,將此指標傳遞給 NMR,以向 NMR 註冊本身。

[in] ClientRegistrationInstance

的指標 NPI_REGISTRATION_INSTANCE 結構。 此結構包含用戶端模組的註冊數據。

[in] ClientBindingContext

用戶端模組與提供者模組之間系結之用戶端模組內容的指標。 用戶端模組會使用此內容來追蹤系結的狀態。 用戶端模組系結內容的內容對提供者模組而言是不透明的。 每當提供者模組呼叫任何用戶端模組 NPI 需要用戶端模組系結內容的回呼函式時,提供者模組都會將此指標傳遞給客戶端模組。

[in] ClientDispatch

常數結構的指標,其中包含用戶端模組 NPI 回呼函式的分派數據表。 結構的內容是 NPI 特定的。 如果 NPI 未定義用戶端分派資料表結構,則此指標會 NULL

[out] ProviderBindingContext

提供者模組將在其內容中儲存指標給用戶端模組與提供者模組之間的系結之變數指標。 提供者模組會使用此內容來追蹤系結的狀態。 提供者模組系結內容的內容對用戶端模組而言是不透明的。 每當用戶端模組呼叫其中一個提供者模組 NPI 需要提供者模組系結內容的函式時,用戶端模組都會將此指標傳遞給提供者模組。 只要用戶端模組連結至提供者模組,提供者模組必須確定此內容會保持有效且保留在記憶體中。

[out] ProviderDispatch

提供者模組將儲存常數結構的指標,其中包含提供者模組 NPI 函式的分派數據表。 提供者模組必須確定只要用戶端模組連結至提供者模組,此結構就保持有效且保留在記憶體中。 結構的內容是 NPI 特定的。

傳回值

提供者模組的 ProviderAttachClient 回呼函式會傳回下列其中一個 NTSTATUS 程式代碼:

傳回碼 描述
STATUS_SUCCESS
提供者模組已成功連結至用戶端模組。
STATUS_NOINTERFACE
提供者模組未附加至客戶端模組。
其他狀態代碼
發生錯誤。

言論

每當用戶端模組呼叫 NmrClientAttachProvider 函式時,NMR 會呼叫提供者模組的 ProviderAttachClient 回呼函式,該函式會代表用戶端模組與提供者模組之間的系結。

提供者模組可以檢查用戶端模組的註冊數據。 此數據位於 ClientRegistrationInstance 參數所指向的結構中。 提供者模組會使用此資料來判斷它是否會附加至用戶端模組:

  • 如果提供者模塊判斷它會附加至用戶端模組,則 ProviderAttachClient 回呼函式必須執行下列動作:
    1. 儲存傳入 ClientBindingContextClientDispatch 參數中的指標,讓提供者模組可以呼叫用戶端模組的 NPI 函式。
    2. 儲存傳入 NmrBindingHandle 參數的句柄。 提供者模組會將此句柄當做參數傳遞至 NmrProviderDetachClientComplete 函式與用戶端模組中斷連結時。
    3. ProviderBindingContext 參數設定為指向用戶端模組與提供者模組之間系結之提供者模組的系結內容結構。
    4. ProviderDispatch 參數設定為指向包含提供者模組 NPI 函式分派數據表的結構。
    5. 傳回STATUS_SUCCESS。
  • 如果提供者模塊判斷它不會附加至用戶端模組,則 ProviderAttachClient 回呼函式必須傳回STATUS_NOINTERFACE。
如果提供者模組連結至用戶端模組,而且它會動態配置其系結內容的記憶體,則當NMR呼叫提供者模組時,它應該釋放配置記憶體在用戶端模組和提供者模組彼此中斷鏈接之後, ProviderCleanupBindingContext 回呼函式。

NMR 會在 IRQL = PASSIVE_LEVEL 呼叫提供者模組的 ProviderAttachClient 回呼函式。

要求

要求 價值
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows作系統中使用。
目標平臺 窗戶
標頭 netioddk.h (包括 Wsk.h)
IRQL PASSIVE_LEVEL

另請參閱

NPI_PROVIDER_CHARACTERISTICS

NPI_REGISTRATION_INSTANCE

NmrClientAttachProvider

NmrProviderDetachClientComplete

NmrRegisterProvider

ProviderCleanupBindingContext

ProviderDetachClient