14 April 1997 19 May 1997 Locking Rules for Po interface code 1. The Dope structure and all elements in it or referred to by it, including idle, notify, and channel structures, are protected by a global lock named PopDopeGlobalLock. use PopLockDopeGlobal and PopUnlockDopeGlobal. EXCEPTION: PoSetDeviceBusy is allowed to wack directly on the IdleCount variable. 2. The Irp serial list is protected by the PopIrpSerialLock, accessed via PopLockIrpSerialList and PopReleaseIrpSerialList, note that the later does NOT lower IRQL. PowerFlags (sys state, dev state, pend, active) are also protected by the irpserial list lock. 3. Notify network protected by eresource named PopNotifyLock, dope/notify data protected by the DopeGlobalLock. 4. Lock order: PopNotifyLock, DopeGlobalLock, IrpSerialLock.