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 並指定 EvtCleanupCallback 或 EvtDestroyCallback 回 呼函式,則架構只會在刪除相關聯的 I/O 佇列時,針對其保留的要求物件呼叫這些回呼函式。
驅動程式 的要求處理程式 可以呼叫 WdfRequestIsReserved 來判斷是否正在使用保留的要求物件。
如需如何使用對象內容空間的詳細資訊,請參閱 Framework 物件內容空間。
如果回呼函式成功配置資源,它應該會傳回STATUS_SUCCESS。
如果發生資源配置錯誤,例如記憶體不足的情況,回呼函式必須傳回錯誤狀態值。 在此情況下,架構會停止配置保留的要求物件,並使用回呼函式的傳回值作為 WdfIoQueueAssignForwardProgressPolicy 的傳回值。
如需 EvtIoAllocateResourcesForReservedRequest 回呼函式的詳細資訊,請參閱 保證 I/O 作業的向前進度。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最低 KMDF 版本 | 1.9 |
標頭 | wdfio.h (包含 Wdf.h) |
IRQL | <=DISPATCH_LEVEL |