ExEnterCriticalRegionAndAcquireResourceExclusive 函数 (wdm.h)

ExEnterCriticalRegionAndAcquireResourceExclusive 例程首先进入关键区域,然后获取对指定资源的独占访问权限。

语法

PVOID ExEnterCriticalRegionAndAcquireResourceExclusive(
  PERESOURCE Resource
);

参数

Resource

[in, out]指向要获取以独占访问的资源的指针。 此参数指向调用方分配的 ERESOURCE 结构。 调用方以前从非分页池中分配了此结构,并通过调用 ExInitializeResourceLiteExReinitializeResourceLite 例程对其进行初始化。

返回值

指向不透明系统结构的指针。 驱动程序应忽略此返回值。

注解

如果在指定的资源不能立即用于独占访问时调用此例程,则会阻止调用线程,直到资源可用。

当驱动程序线程在关键区域中运行时,不会执行驱动程序的用户 APC 和普通内核 APC。 仍会执行特殊的内核 APC。 有关这些 APC 类型的详细信息,请参阅 APC 的类型

通过暂时禁用普通内核 APC,ExEnterCriticalRegionAndAcquireResourceExclusive 可防止被动级别调用线程被 APC 抢占,而线程持有 APC 可能尝试访问的共享资源。

调用线程应停留在关键区域中,并保留指定的资源的时间不应超过必要时间。 若要释放指定的资源并离开关键区域,请调用 ExReleaseResourceAndLeaveCriticalRegion 例程。

有关使用 ERESOURCE 结构同步对资源的独占访问的详细信息,请参阅 ERESOURCE 例程简介。 有关进入和离开关键区域的详细信息,请参阅 关键区域和受保护的区域

要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2003 SP1
标头 wdm.h
IRQL <= APC_LEVEL
DDI 符合性规则 CriticalRegions (wdm) HwStorPortProhibitedDDI (storport)

另请参阅

ERESOURCE

ExAcquireResourceExclusiveLite

ExInitializeResourceLite

ExReinitializeResourceLite

ExReleaseResourceLite

ExReleaseResourceAndLeaveCriticalRegion

KeEnterCriticalRegion

KeLeaveCriticalRegion