/*++ Copyright (c) 2000 Microsoft Corporation Module Name: remlock.h Abstract: Common RemoveLock Authors: Jeff Midkiff Environment: kernel mode only Notes: Simple binary compatible RemoveLock definitions for Win9x & Win2k made to mimic the new Win2k ONLY IoXxxRemoveLock functions. See the Win2k DDK for descriptions. Revision History: --*/ #include #include #if !defined (_REMLOCK_) #define _REMLOCK_ #if (DBG && WIN2K_LOCKS) #include "debug.h" typedef IO_REMOVE_LOCK REMOVE_LOCK; typedef PIO_REMOVE_LOCK PREMOVE_LOCK; __inline VOID InitializeRemoveLock(IN PREMOVE_LOCK Lock) { IoInitializeRemoveLock(Lock, 'HECW', 1, 100); DbgDump(DBG_LOCKS, ("InitializeRemoveLock: %p, %d\n", Lock, Lock->Common.IoCount)); } __inline NTSTATUS AcquireRemoveLock(PIO_REMOVE_LOCK Lock, PVOID Tag) { NTSTATUS status = IoAcquireRemoveLock(Lock, Tag); DbgDump(DBG_LOCKS, ("AcquireRemoveLock: %d, %p\n", Lock->Common.IoCount, Tag)); return status; } __inline VOID ReleaseRemoveLock(PIO_REMOVE_LOCK Lock, PVOID Tag) { IoReleaseRemoveLock(Lock, Tag); DbgDump(DBG_LOCKS, ("ReleaseRemoveLock: %d, %p\n", Lock->Common.IoCount, Tag)); } __inline VOID ReleaseRemoveLockAndWait(PIO_REMOVE_LOCK Lock, PVOID Tag) { DbgDump(DBG_LOCKS, ("ReleaseRemoveLockAndWait: %d, %p\n", Lock->Common.IoCount, Tag)); IoReleaseRemoveLockAndWait(Lock, Tag); } #else typedef struct _REMOVE_LOCK { BOOLEAN Removed; BOOLEAN Reserved[3]; LONG IoCount; KEVENT RemoveEvent; } REMOVE_LOCK, *PREMOVE_LOCK; VOID InitializeRemoveLock( IN PREMOVE_LOCK Lock ); NTSTATUS AcquireRemoveLock( IN PREMOVE_LOCK Lock, IN OPTIONAL PVOID Tag ); VOID ReleaseRemoveLock( IN PREMOVE_LOCK Lock, IN OPTIONAL PVOID Tag ); VOID ReleaseRemoveLockAndWait( IN PREMOVE_LOCK Lock, IN OPTIONAL PVOID Tag ); #endif #endif // _REMLOCK_ //EOF