MINIPORT_CO_CREATE_VC回调函数 (ndis.h)
面向连接的微型端口需要 MiniportCoCreateVc 函数。 MiniportCoCreateVc 由 NDIS 调用,以向微型端口驱动程序指示正在创建新的 VC。
语法
MINIPORT_CO_CREATE_VC MiniportCoCreateVc;
NDIS_STATUS MiniportCoCreateVc(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] NDIS_HANDLE NdisVcHandle,
[out] PNDIS_HANDLE MiniportVcContext
)
{...}
参数
[in] MiniportAdapterContext
指定微型端口驱动程序分配的上下文区域的句柄,微型端口驱动程序在其中维护有关此适配器实例的状态信息。 微型端口驱动程序通过调用向 NDIS 提供此句柄 NdisMSetMiniportAttributes MiniportInitializeEx 函数。
[in] NdisVcHandle
指定由 NDIS 提供的句柄,该句柄唯一标识要创建的 VC。 此句柄对微型端口驱动程序不透明,并为 NDIS 库使用保留。
[out] MiniportVcContext
在输出中,指定微型端口驱动程序提供的上下文区域的句柄,微型端口驱动程序在其中维护有关 VC 的状态。
返回值
返回代码 | 描述 |
---|---|
|
指示微型端口驱动程序已成功分配所有必要的资源,并准备自己来处理新创建的 VC 的请求。 |
|
指示调用管理器无法获取动态分配的资源,因此无法对新 VC 进行作。 |
言论
MiniportCoCreateVc 必须编写为同步函数,在任何情况下都不能返回NDIS_STATUS_PENDING,而不会导致系统范围的故障。
MiniportCoCreateVc 分配微型端口驱动程序维护有关 VC 的状态信息所需的任何必要资源。 这些资源可能包括,但并不限于内存缓冲区、事件、数据结构和其他类似的资源。
分配所有必需的资源后,微型端口驱动程序应将资源初始化为可用状态,并返回指向 MiniportVcContext中状态区域的指针。 通过取消引用句柄并将指向状态缓冲区的指针存储为句柄的值来设置句柄。 例如:
*MiniportVcContext = SomeBuffer;
微型端口驱动程序 必须 将句柄存储在 VC(NdisVcHandle)的状态区域中,因为它是随后由微型端口驱动程序调用的其他 NDIS 库例程所需的参数。
示例
若要定义 MiniportCoCreateVc 函数,必须先提供一个函数声明,用于标识要定义的函数类型。 Windows 为驱动程序提供了一组函数类型。 使用函数类型声明函数有助于 驱动程序代码分析、静态驱动程序验证程序(SDV)和其他验证工具查找错误,这是为 Windows作系统编写驱动程序的要求。例如,若要定义名为“MyCoCreateVc”的 MiniportCoCreateVc 函数,请使用 MINIPORT_CO_CREATE_VC 类型,如以下代码示例所示:
MINIPORT_CO_CREATE_VC MyCoCreateVc;
然后,按如下所示实现函数:
_Use_decl_annotations_
NDIS_STATUS
MyCoCreateVc(
NDIS_HANDLE MiniportAdapterContext,
NDIS_HANDLE NdisVcHandle,
PNDIS_HANDLE MiniportVcContext
)
{...}
MINIPORT_CO_CREATE_VC 函数类型在 Ndis.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations 批注可确保使用应用于头文件中 MINIPORT_CO_CREATE_VC 函数类型的批注。 有关函数声明要求的详细信息,请参阅 使用 NDIS 驱动程序的函数角色类型声明函数。
有关 Use_decl_annotations的信息,请参阅 批注函数行为。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista 中支持 NDIS 6.0 和 NDIS 5.1 驱动程序(请参阅 MiniportCoCreateVc (NDIS 5.1) 。 在 Windows XP 中支持 NDIS 5.1 驱动程序(请参阅 MiniportCoCreateVc (NDIS 5.1)。 |
目标平台 | 窗户 |
标头 | ndis.h (包括 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |