阅读:990回复:0
请教各位关于address creation mutex 和APC的问题~~~~~~?!
win2k souce 里有这么一段:
// // Get the address creation mutex to block multiple threads from // creating or deleting address space at the same time and // get the working set mutex so virtual address descriptors can // be inserted and walked. Block APCs so an APC which takes a page // fault does not corrupt various structures. // 它的实现是: ExAcquireFastMutex ( &((CurrentProcess)->AddressCreationLock)); ASSERT (MI_NOT_WS_OWNER(CurrentProcess)); ASSERT (KeGetCurrentIrql() == APC_LEVEL); ExAcquireFastMutexUnsafe( &((CurrentProcess)->WorkingSetLock)); (CurrentProcess)->WorkingSetLock.OldIrql = MI_MUTEX_ACQUIRED_UNSAFE; 1)但是当我调用时,在第一个函数就阻塞了,不知道为何? 2)而当我把第一句去掉时,又在KeGetCurrentIrql()返回时!=APC_LEVEL 那么又如何使得APC禁用呢? 这里有两个疑惑:为什么要禁用APC,如何禁用APC呢? |
|