共用方式為


PROTOCOL_CM_OPEN_AF回呼函式 (ndis.h)

需要 ProtocolCmOpenAf 函式。 此函式會配置個別開啟的資源,讓呼叫管理員與開啟位址系列的連接導向 NDIS 用戶端互動。

注意 您必須使用 PROTOCOL_CM_OPEN_AF 類型來宣告函式。 如需詳細資訊,請參閱下列範例一節。
 

語法

PROTOCOL_CM_OPEN_AF ProtocolCmOpenAf;

NDIS_STATUS ProtocolCmOpenAf(
  [in]  NDIS_HANDLE CallMgrBindingContext,
  [in]  PCO_ADDRESS_FAMILY AddressFamily,
  [in]  NDIS_HANDLE NdisAfHandle,
  [out] PNDIS_HANDLE CallMgrAfContext
)
{...}

參數

[in] CallMgrBindingContext

針對非整合式呼叫管理員, CallMgrBindingContext 會指定呼叫管理員配置內容區域的句柄,呼叫管理員會維護其個別系結狀態資訊。 呼叫管理員在呼叫 NdisOpenAdapterEx 時提供此句柄。

針對整合式呼叫管理員 (MCM ) ,CallMgrBindingContext 會指定迷你埠配置內容區域的句柄,迷你埠會維護其個別配接器狀態資訊。 迷你埠在其 NdisMSetAttributesEx 呼叫 5.x 驅動程式的 () 或其 NdisMSetMiniportAttributes 呼叫 6.x 驅動程式的 () 。

[in] AddressFamily

指定用戶端正在開啟的位址系列。 此位址系列在呼叫時由呼叫管理員註冊 NdisCmRegisterAddressFamilyEx.

[in] NdisAfHandle

指定 NDIS 所提供的句柄,可唯一識別此位址系列實例。 此句柄對呼叫管理員而言不透明,並保留供系統使用。

[out] CallMgrAfContext

指定呼叫管理員提供之內容區域的句柄,而呼叫管理員會維護其所提供之位址系列開啟的狀態。

傳回值

ProtocolCmOpenAf 會傳回其作業的狀態, (s) 為下列其中一項:

傳回碼 Description
NDIS_STATUS_SUCCESS
表示呼叫管理員已成功配置並初始化接受用戶端到此位址系列要求所需的任何資源。
NDIS_STATUS_PENDING
表示要求的作業是以異步方式處理。 呼叫管理員必須呼叫 NdisCmOpenAddressFamilyComplete 完成其所有 open-AF 作業,以向 NDIS (指出作業) 作業 () 已完成。
NDIS_STATUS_RESOURCES
表示呼叫管理員因缺少可用的系統資源而無法完成其必要作業 () 。
NDIS_STATUS_XXX
表示呼叫管理員無法將本身設定為可接受用戶端要求以在此位址系列上運作的狀態。 這可能是從另一個 NDIS 連結庫函式傳播的錯誤狀態,或驅動程式寫入器所決定的任何錯誤狀態。

備註

ProtocolCmOpenAf 會執行呼叫管理員寫入器認為代表開啟此位址系列實例之用戶端執行作業所需的任何動態資源和結構配置。 這類資源包括但不限於記憶體緩衝區、數據結構、事件和其他類似的資源。 呼叫管理員也應該先初始化任何相關的個別開啟數據,再將控制權傳回 NDIS。

當呼叫管理員已配置其個別開啟的狀態區域時,應該先在 CallMgrAfContext 句柄中設定狀態區域的位址,再將控制權傳回 NDIS。 若要這樣做,請取值 CallMgrAfContext ,並將數據區的指標儲存為句柄的值。 例如:

*CallMgrAfContext = SomeBuffer;

如果 ProtocolCmOpenAf 無法配置每個開啟的資源,它必須代表開啟此位址系列的用戶端執行後續要求,它應該釋放為開啟配置的所有資源,並將控制權傳回給具有NDIS_STATUS_RESOURCES的 NDIS。

如果 ProtocolCmOpenAf 已完成其必要作業,而且 CM 已準備好接受來自用戶端的要求, ProtocolCmOpenAf 應該儘快傳回控制權,且狀態為 NDIS_STATUS_SUCCESS。

例子

若要定義 ProtocolCmOpenAf 函 式,您必須先提供函式宣告,以識別您要定義的函式類型。 Windows 提供一組驅動程式的函式類型。 使用函式類型宣告函式有助於 驅動程式的程式代碼分析靜態驅動程序驗證器 (SDV) ,以及其他驗證工具會尋找錯誤,而且這是撰寫 Windows 操作系統驅動程式的需求。

例如,若要定義名為 「 MyCmOpenAf」 的 ProtocolCmOpenAf 函式,請使用 PROTOCOL_CM_OPEN_AF 類型,如下列程式代碼範例所示:

PROTOCOL_CM_OPEN_AF MyCmOpenAf;

然後,實作您的函式,如下所示:

_Use_decl_annotations_
NDIS_STATUS
 MyCmOpenAf(
    NDIS_HANDLE  CallMgrBindingContext,
    PCO_ADDRESS_FAMILY  AddressFamily,
    NDIS_HANDLE  NdisAfHandle,
    PNDIS_HANDLE  CallMgrAfContext
    )
  {...}

PROTOCOL_CM_OPEN_AF函式類型定義於 Ndis.h 頭檔中。 若要在執行程式代碼分析工具時更精確地識別錯誤,請務必將 Use_decl_annotations 註釋新增至函式定義。 Use_decl_annotations註釋可確保使用頭檔中套用至PROTOCOL_CM_OPEN_AF函式類型的批註。 如需函式宣告需求的詳細資訊,請參閱 使用 NDIS 驅動程式的函式角色類型來宣告函式。

如需 Use_decl_annotations的詳細資訊,請參閱 標註函式行為

規格需求

需求
最低支援的用戶端 支援 NDIS 6.0 和 NDIS 5.1 驅動程式 (請參閱 Windows Vista 中的 ProtocolCmOpenAf (NDIS 5.1) ) 。 支援 NDIS 5.1 驅動程式 (請參閱 Windows XP 中的 ProtocolCmOpenAf (NDIS 5.1) ) 。
目標平台 Windows
標頭 ndis.h (包括 Ndis.h)
IRQL <= DISPATCH_LEVEL

另請參閱

NdisClOpenAddressFamilyEx

NdisCmOpenAddressFamilyComplete NdisCmRegisterAddressFamilyEx

NdisOpenAdapterEx