NdisAllocateCloneOidRequest 函数 (ndis.h)

NdisAllocateCloneOidRequest 函数为新的 NDIS_OID_REQUEST 结构分配内存,并将现有NDIS_OID_REQUEST结构中的所有信息复制到新分配的结构。

语法

NDIS_STATUS NdisAllocateCloneOidRequest(
  [in] IN NDIS_HANDLE        SourceHandle,
       IN PNDIS_OID_REQUEST  OidRequest,
  [in] IN UINT               PoolTag,
       OUT PNDIS_OID_REQUEST *ClonedOidRequest
);

参数

[in] SourceHandle

标识筛选器模块或中间驱动程序协议绑定的 NDIS 句柄。

OidRequest

指向现有 NDIS_OID_REQUEST 结构的指针,其中 NDIS 会将信息复制到新分配的结构。

[in] PoolTag

内核池标记。 该标记是一个字符串,用单引号分隔,通常按相反顺序指定四个字符。

ClonedOidRequest

指向指向NDIS_OID_REQUEST结构的指针的指针。 如果 NDIS 返回NDIS_STATUS_SUCCESS,NDIS 将提供指向新克隆NDIS_OID_REQUEST结构的指针;否则,NDIS 将指针值设置为 NULL

返回值

NdisAllocateClonedRequest 可以返回以下状态值之一:

返回代码 描述
NDIS_STATUS_SUCCESS
NDIS 已成功分配NDIS_OID_REQUEST结构。 CloneRequest 参数包含指向NDIS_OID_REQUEST结构的指针。
NDIS_STATUS_INVALID_PARAMETER
分配请求失败,因为 SourceHandle 中指定的 NDIS 句柄无效。
NDIS_STATUS_RESOURCES
分配请求失败,因为 NDIS 没有足够的资源来完成分配请求。
NDIS_STATUS_FAILURE
由于上述列表中的其他原因,驱动程序无法分配克隆的结构。

言论

若要将请求转发到基础驱动程序,NDIS 中间驱动程序或筛选器驱动程序必须调用 NdisAllocateCloneOidRequest 来分配克隆 NDIS_OID_REQUEST 结构。 筛选器驱动程序或中间驱动程序不应将原始NDIS_OID_REQUEST结构转发到基础驱动程序。

NdisAllocateCloneOidRequest 分配新内存,并将现有NDIS_OID_REQUEST结构中的数据复制到新结构。

驱动程序随后必须调用 NdisFreeCloneOidRequest 函数来释放NDIS_OID_REQUEST结构。

要求

要求 价值
最低支持的客户端 NDIS 6.0 及更高版本中受支持。
目标平台 桌面
标头 ndis.h (包括 Ndis.h)
Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_OID_Function(ndis)

另请参阅

NDIS_OID_REQUEST

NdisFreeCloneOidRequest