FltAcquireResourceShared 函数 (fltkernel.h)

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

语法

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

参数

[in/out] Resource

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

返回值

无。

备注

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

是否向调用方授予对给定资源的共享访问权限取决于以下内容:

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

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

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

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

FltAcquireResourceSharedExAcquireResourceSharedLite 的包装器,可禁用正常的内核 APC 传递。

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

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

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

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

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

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

要求

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