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;
微型端口驱动程序 必须将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的信息,请参阅 批注函数行为。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | NDIS 6.0 和 NDIS 5.1 驱动程序支持 (请参阅 Windows Vista 中的 MiniportCoCreateVc (NDIS 5.1) ) 。 支持 NDIS 5.1 驱动程序 (请参阅 Windows XP 中的 MiniportCoCreateVc (NDIS 5.1) ) 。 |
目标平台 | Windows |
标头 | ndis.h (包括 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |