Limitations inside a critical region

I know that when a thread disables special kernel APCs it cannot invoke many APIs, Are there any APIs a thread cannot use when it disables Normal Kernel APCs (=Enters a critical region) ?
Thanks :slight_smile:

IIRC, all the existing API limitations are IRQL-based. Some API may be used only at PASSIVE_LEVEL (for example, the ones that cause page faults that may be result in accessing a pagefile, so that they cannot be used on the paging IO path to the pagefile,which runs at APC_LEVEL).
Some API cannot be used at IRQL>=DISPATCH_LEVEL( i.e the ones that involve sleeping for non-zero interval). Some API (like, for example, KeAcquireSpinlock AtDpcLevel()) have to be used only in atomic context (i.e.at IRQL>=DISPATCH_LEVEL) - if you try to use it while context switches on a given CPU are allowed you may potentially deadlock.

Anton Bassov