共用方式為


NmrClientAttachProvider 函式 (netioddk.h)

NmrClientAttachProvider 函式會將用戶端模組附加至提供者模組。

語法

NTSTATUS NmrClientAttachProvider(
  [in]  HANDLE                 NmrBindingHandle,
  [in]  __drv_aliasesMem PVOID ClientBindingContext,
  [in]  const VOID             *ClientDispatch,
  [out] PVOID                  *ProviderBindingContext,
  [out] const VOID             **ProviderDispatch
);

參數

[in] NmrBindingHandle

NMR 用來表示用戶端模組與提供者模組之間系結的句柄。 NMR 會在呼叫用戶端模組的 ClientAttachProvider 回呼函式時,將此句柄傳遞至用戶端模組。

[in] ClientBindingContext

用戶端模組與提供者模組之間系結之呼叫端提供內容的指標。 用戶端模組會使用此內容來追蹤系結的狀態。 用戶端模組系結內容的內容與提供者模組不透明。 每當提供者模組呼叫任何需要用戶端模組系結內容的用戶端模組 NPI 回呼函式時,提供者模組就會將此指標傳遞至用戶端模組。 只要提供者模組連結至用戶端模組,用戶端模組就必須確保此內容保持有效且駐留在記憶體中。

[in] ClientDispatch

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

[out] ProviderBindingContext

變數的指標,接收用戶端模組與提供者模組之間系結之提供者模組內容的指標。 提供者模組會使用此內容來追蹤系結的狀態。 提供者模組系結內容的內容與用戶端模組不透明。 每當用戶端模組呼叫任何需要提供者模組系結內容的提供者模組 NPI 函式時,用戶端模組就會將此指標傳遞至提供者模組。

[out] ProviderDispatch

接收包含 分派數據表之結構指標之變數的指標
提供者模組的 NPI 函式。 結構的內容是 NPI 特定的。

傳回值

NmrClientAttachProvider 函式會傳回下列其中一個 NTSTATUS 代碼:

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

備註

用戶端模組會從其 ClientAttachProvider 回呼函式呼叫 NmrClientAttachProvider 函式,以將本身附加至提供者模組。

當用戶端模組呼叫 NmrClientAttachProvider 函式時,NMR 會呼叫提供者模組的 ProviderAttachClient 回 呼函式來完成附件程式。 NmrClientAttachProvider 函式會傳回提供者模組的 ProviderAttachClient 回呼函式所傳回的狀態代碼。

如果 NmrClientAttachProvider 函式未傳回STATUS_SUCCESS,用戶端模組應該對其系結內容結構中包含的數據執行任何必要的清除。 如果用戶端模組以動態方式配置結構的記憶體,則用戶端模組應該釋放其系結內容結構的記憶體。

如果 NmrClientAttachProvider 函式傳回STATUS_SUCCESS,而用戶端模組會動態配置其系結內容的記憶體,則當 NMR 呼叫用戶端模組的 時,用戶端模組應該釋放配置記憶體用戶端模組和提供者模組彼此中斷鏈接之後的 ClientCleanupBindingContext 回呼函式。

如果 NmrClientAttachProvider 函式傳回STATUS_SUCCESS,用戶端模組必須儲存 ProviderBindingContextProviderDispatch 參數中傳回的指標,以便呼叫提供者模組的 NPI 函式。

規格需求

需求
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。
目標平台 桌面
標頭 netioddk.h (包含 Wsk.h)
程式庫 Netio.lib
IRQL PASSIVE_LEVEL

另請參閱

ClientAttachProvider

ClientCleanupBindingContext

ProviderAttachClient