FltRetrieveIoPriorityInfo 函式 (fltkernel.h)

Minifilter 驅動程式會使用 FltRetrieveIoPriorityInfo 例程,從線程擷取優先順序資訊。

語法

NTSTATUS FLTAPI FltRetrieveIoPriorityInfo(
  [in, optional] PFLT_CALLBACK_DATA Data,
  [in, optional] PFILE_OBJECT       FileObject,
  [in, optional] PETHREAD           Thread,
  [in, out]      PIO_PRIORITY_INFO  PriorityInfo
);

參數

[in, optional] Data

FLT_CALLBACK_DATA 結構的選擇性指標,代表 I/O 作業。 此參數可以是 Null

[in, optional] FileObject

與 I/O 作業相關聯的檔案對象的選擇性指標。 此參數可以是 Null

[in, optional] Thread

要從中擷取優先順序資訊的線程選擇性指標。 此參數可以是 Null

[in, out] PriorityInfo

用來從指定線程接收優先順序資訊的 IO_PRIORITY_INFO 結構的指標。 IO_PRIORITY_INFO 結構必須先由適當的例程初始化,才能供這個例程使用。 如需詳細資訊,請參閱下列一節。

傳回值

FltRetrieveIoPriorityInfo 例程會傳回STATUS_SUCCESS或適當的 NTSTATUS 值。

備註

FltRetrieveIoPriorityInfo 例程會擷取優先順序資訊,並將資訊儲存在 PriorityInfo 參數所指向的結構中。

一般而言, FltRetrieveIoPriorityInfo 例程會與 FltApplyPriorityInfoThread 例程搭配使用,以儲存並設定線程的 I/O 優先順序、分頁優先順序和線程優先順序。

如果 Thread 參數為非 NULL,則會擷取線程的分頁優先順序和線程優先順序,並將其放在 PriorityInfo 參數所指向之IO_PRIORITY_INFO結構的 PagePriorityThreadPriority 成員中。 如果 Thread 參數為 NULL,則IO_PRIORITY_INFO結構的 ThreadPriority 和 PagePriority 成員會以 sentinel 值標示,指出線程的分頁和線程優先順序不應該由系統變更。 請注意,這些 sentinel 值會維持有效狀態,直到明確變更為止。

下列虛擬程式代碼範例說明擷取的 I/O 優先順序值,並放在 PriorityInfo 參數所指向之IO_PRIORITY_INFO結構的 IoPriority 成員中。

Set the IoPriority member of the structure pointed to by the PriorityInfo parameter to the normal I/O priority value.
IF Data is not NULL and represents an IRP-based operation and has I/O priority information available THEN
    Set the IoPriority member of the structure pointed to by the PriorityInfo parameter to the Data's I/O priority value.
ELSE IF the FileObject parameter is not NULL and has I/O priority information available THEN
    Set the IoPriority member of the structure pointed to by the PriorityInfo parameter to the FileObject's I/O priority value.
ELSE IF the Thread parameter is not NULL THEN
    Set the IoPriority member of the structure pointed to by the PriorityInfo parameter to the Thread's I/O priority value.

注意

如果 PriorityInfo 參數所指向的IO_PRIORITY_INFO結構尚未初始化,您必須先執行此動作,再呼叫這個例程,方法是呼叫 IoInitializePriorityInfo 例程。

規格需求

需求
最低支援的用戶端 此例程從 Windows Vista 開始可供使用。
目標平台 Universal
標頭 fltkernel.h (包含 Fltkernel.h)
程式庫 Fltmgr.lib
Dll FltMgr.sys
IRQL <= DISPATCH_LEVEL

另請參閱

FLT_CALLBACK_DATA

FltApplyPriorityInfoThread

FltGetIoPriorityHint

FltGetIoPriorityHintFromCallbackData

FltGetIoPriorityHintFromFileObject

FltGetIoPriorityHintFromThread

FltRetrieveIoPriorityInfo

FltSetIoPriorityHintIntoCallbackData

FltSetIoPriorityHintIntoFileObject

FltSetIoPriorityHintIntoThread

IO_PRIORITY_INFO

IoInitializePriorityInfo

PsGetCurrentThread