EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST回呼函式 (wdfio.h)

[僅適用於 KMDF]

驅動程式的 EvtIoAllocateResourcesForReservedRequest 回呼函式會配置驅動程式未來可用來處理 I/O 要求的要求特定資源。 架構會預先配置指定的要求物件,以供日後用於記憶體不足的情況。

語法

EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST EvtWdfIoAllocateResourcesForReservedRequest;

NTSTATUS EvtWdfIoAllocateResourcesForReservedRequest(
  [in] WDFQUEUE Queue,
  [in] WDFREQUEST Request
)
{...}

參數

[in] Queue

I/O 佇列物件的句柄。

[in] Request

架構為了在未來低記憶體情況下使用而建立的要求物件句柄。

傳回值

EvtIoAllocateResourcesForReservedRequest 回呼函式必須傳回STATUS_SUCCESS或另一個狀態值,如果函式遇到錯誤,NT_SUCCESS (狀態) 等於 TRUE。 否則,此函式必須傳回狀態值,NT_SUCCESS (狀態) 等於 FALSE

備註

當驅動程式呼叫 WdfIoQueueAssignForwardProgressPolicy 時,驅動程式可以註冊 EvtIoAllocateResourcesForReservedRequest 回呼函式。

如果您的驅動程式註冊 EvtIoAllocateResourcesForReservedRequest 回呼函式,架構會在建立要求對象之後立即呼叫函式,該函式會保留給低記憶體的情況。

如果架構因為記憶體不足的情況而使用保留要求,回呼函式可以配置驅動程式稍後處理要求所需的資源。

若要配置要求特定資源的記憶體, EvtIoAllocateResourcesForReservedRequest 回呼函式可能會呼叫 WdfObjectAllocateContext,並指定 Request 參數所指定的要求物件句柄。

或者,您的驅動程式可能會在呼叫 WdfDeviceCreate 之前呼叫 WdfDeviceInitSetRequestAttributes。 因此,架構會在建立物件時,為每個保留的要求物件配置內容空間。

如果您的驅動程式為保留的要求物件配置對象內容空間,則驅動程式必須在完成使用保留要求物件的 I/O 要求時重新初始化內容空間。 架構不會在使用後重新初始化保留要求對象的內容空間。

如果您的驅動程式針對其要求物件呼叫 WdfDeviceInitSetRequestAttributes 並指定 EvtCleanupCallbackEvtDestroyCallback 回 呼函式,則架構只會在刪除相關聯的 I/O 佇列時,針對其保留的要求物件呼叫這些回呼函式。

驅動程式 的要求處理程式 可以呼叫 WdfRequestIsReserved 來判斷是否正在使用保留的要求物件。

如需如何使用對象內容空間的詳細資訊,請參閱 Framework 物件內容空間

如果回呼函式成功配置資源,它應該會傳回STATUS_SUCCESS。

如果發生資源配置錯誤,例如記憶體不足的情況,回呼函式必須傳回錯誤狀態值。 在此情況下,架構會停止配置保留的要求物件,並使用回呼函式的傳回值作為 WdfIoQueueAssignForwardProgressPolicy 的傳回值。

如需 EvtIoAllocateResourcesForReservedRequest 回呼函式的詳細資訊,請參閱 保證 I/O 作業的向前進度

規格需求

需求
目標平台 Universal
最低 KMDF 版本 1.9
標頭 wdfio.h (包含 Wdf.h)
IRQL <=DISPATCH_LEVEL

另請參閱

EvtIoAllocateRequestResources

WdfIoQueueAssignForwardProgressPolicy

WdfRequestIsReserved