windows-nt/Source/XPSP1/NT/drivers/wdm/usb/driver/wceusbsh/remlock.h
2020-09-26 16:20:57 +08:00

108 lines
1.9 KiB
C

/*++
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 <ntverp.h>
#include <wdm.h>
#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