PROTOCOL_CM_OPEN_AF回呼函式 (ndis.h)
需要 ProtocolCmOpenAf 函式。 此函式會為呼叫管理員配置個別開啟的資源,以與開啟位址系列的連接導向 NDIS 用戶端互動。
語法
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 會傳回其作業的狀態,如下所示:
傳回碼 | 描述 |
---|---|
|
表示呼叫管理員已成功配置並初始化任何接受用戶端要求至此位址系列所需的資源。 |
|
表示要求的作業是以異步方式處理。 通話管理員必須呼叫 NdisCmOpenAddressFamilyComplete 完成其所有 open-AF 作業,以向 NDIS (和用戶端) 指出作業已完成。 |
|
表示呼叫管理員無法完成其必要的作業,因為缺少可用的系統資源,例如記憶體。 |
|
表示呼叫管理員無法將自己設定為可接受用戶端要求以在此位址系列上運作的狀態。 這可能是從另一個 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的相關信息,請參閱 批注函式行為。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista 中支援 NDIS 6.0 和 NDIS 5.1 驅動程式(請參閱 ProtocolCmOpenAf (NDIS 5.1)。 Windows XP 中支援 NDIS 5.1 驅動程式(請參閱 ProtocolCmOpenAf (NDIS 5.1)。 |
目標平臺 | 窗戶 |
標頭 | ndis.h (包括 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |