FltRetrieveIoPriorityInfo 函数 (fltkernel.h)

微筛选器驱动程序使用 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结构的 ThreadPriorityPagePriority 成员使用 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 开始可用。
目标平台 通用
标头 fltkernel.h (包括 Fltkernel.h)
Library 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