FltAcquireResourceShared 函数 (fltkernel.h)

FltAcquireResourceShared 例程获取由调用线程进行共享访问的给定资源。

语法

VOID FLTAPI FltAcquireResourceShared(
  [in/out] PERESOURCE Resource
);

参数

[in/out] Resource

指向不透明 ERESOURCE 结构的指针。 此结构必须由非分页池的调用方分配,并通过调用 ExInitializeResourceLiteExReinitializeResourceLite进行初始化。

返回值

没有。

言论

FltAcquireResourceShared 例程获取由调用线程进行共享访问的给定资源。

是否或何时向调用方提供对给定资源的共享访问权限取决于以下情况:

  • 如果资源当前未拥有,则立即向当前线程授予共享访问权限。

  • 如果调用方已获取资源(用于共享或独占访问),则以递归方式向当前线程授予相同类型的访问。 请注意,进行此调用不会将调用方对给定资源的独占所有权转换为共享。

  • 如果资源当前由另一个线程共享,并且没有线程正在等待对资源的独占访问,则立即向调用方授予共享访问权限。 如果存在排他服务员,则调用方将进入等待状态。

  • 如果资源当前由另一个线程拥有为独占,或者有另一个线程正在等待独占访问,并且调用方尚未对资源具有共享访问权限,则当前线程将进入等待状态,直到获取资源。

FltAcquireResourceShared 是禁用正常内核 APC 传递的 ExAcquireResourceSharedLite 的包装器。

由于 FltAcquireResourceShared 禁用正常的内核 APC 传递,因此在调用 FltAcquireResourceShared之前,无需调用 KeEnterCriticalRegionFsRtlEnterFileSystem

若要在获取资源后释放资源,请调用 FltReleaseResource。 对 FltAcquireResourceShared 的每个成功调用都必须匹配对 FltReleaseResource的后续调用。

若要获取资源进行独占访问,请调用 FltAcquireResourceExclusive

若要从系统的资源列表中删除资源,请调用 ExDeleteResourceLite

若要初始化资源以供重复使用,请调用 ExReinitializeResourceLite

有关 ERESOURCE 结构的详细信息,请参阅 ERESOURCE 例程简介。

要求

要求 价值
最低支持的客户端 Windows XP SP2
支持的最低服务器 Windows Server 2003 SP1
标头 fltkernel.h
FltMgr.lib
IRQL IRQL <= APC_LEVEL