[仅适用于 KMDF]
驱动程序的 EvtIoAllocateRequestResources 回调函数分配驱动程序处理指定请求所需的特定于请求的资源。
语法
EVT_WDF_IO_ALLOCATE_REQUEST_RESOURCES EvtWdfIoAllocateRequestResources;
NTSTATUS EvtWdfIoAllocateRequestResources(
[in] WDFQUEUE Queue,
[in] WDFREQUEST Request
)
{...}
参数
[in] Queue
I/O 队列对象的句柄。
[in] Request
框架创建的请求对象的句柄。 该框架尚未将请求对象添加到 队列 参数的句柄指定的 I/O 队列。
返回值
EvtIoAllocateRequestResources 回调函数必须返回STATUS_SUCCESS或其他状态 NT_SUCCESS值(状态)等于 TRUE(如果函数遇到错误)。 否则,此函数必须返回一个状态值,NT_SUCCESS(状态)等于 FALSE。
注解
驱动程序可以在调用 WdfIoQueueAssignForwardProgressPolicy时注册 EvtIoAllocateRequestResources 回调函数。
如果驱动程序注册了 EvtIoAllocateRequestResources 回调函数,则框架会在为 I/O 管理器发送到驱动程序的 I/O 请求数据包(IRP)创建请求对象后立即调用该函数。
回调函数可以分配驱动程序稍后需要处理请求的资源,该驱动程序从 队列 参数的句柄指定的 I/O 队列中获取请求对象。
如果回调函数成功分配资源并返回STATUS_SUCCESS,框架最终会将请求对象传递到驱动程序。
如果发生资源分配错误(例如内存不足的情况),回调函数必须返回错误状态值。 在本例中,框架遵循驱动程序的向前进度策略,该策略在调用 WdfIoQueueAssignForwardProgressPolicy时使用 WDF_IO_FORWARD_PROGRESS_RESERVED_POLICY 值指定驱动程序。
有关 EvtIoAllocateRequestResources 回调函数的详细信息,请参阅 保证 I/O作的向前进度。
可以在 IRQL <= DISPATCH_LEVEL调用此回调函数。 如果 IRQL PASSIVE_LEVEL,则框架会在 关键区域调用回调函数。
要求
| 要求 | 价值 |
|---|---|
| 目标平台 | 普遍 |
| 最低 KMDF 版本 | 1.9 |
| 标头 | wdfio.h (包括 Wdf.h) |
| IRQL | <=DISPATCH_LEVEL (请参阅“备注”部分) |