windows-nt/Source/XPSP1/NT/ds/win32/ntcrypto/randlib/umkm.h
2020-09-26 16:20:57 +08:00

85 lines
2 KiB
C

/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
umkm.h
Abstract:
Macros to simplify usermode & kernelmode shared code.
Author:
Scott Field (sfield) 19-Sep-99
--*/
#ifndef __UMKM_H__
#define __UMKM_H__
#ifndef KMODE_RNG
#define __LOCK_TYPE CRITICAL_SECTION
#define INIT_LOCK(x) InitializeCriticalSection(x)
//#define INIT_LOCK(x) InitializeCriticalSectionAndSpinCount(x, 0x333)
#define DELETE_LOCK(x) DeleteCriticalSection(x)
#define ENTER_LOCK(x) EnterCriticalSection(x)
#define LEAVE_LOCK(x) LeaveCriticalSection(x)
#define ALLOC(cb) HeapAlloc(GetProcessHeap(), 0, cb)
#define ALLOC_NP(cb) ALLOC(cb)
#define FREE(pv) HeapFree(GetProcessHeap(), 0, pv)
#define REGCLOSEKEY(x) RegCloseKey( x )
#ifdef WIN95_RNG
PVOID
InterlockedCompareExchangePointerWin95(
PVOID *Destination,
PVOID Exchange,
PVOID Comperand
);
#define INTERLOCKEDCOMPAREEXCHANGEPOINTER(x,y,z) InterlockedCompareExchangePointerWin95(x,y,z)
#else
#define INTERLOCKEDCOMPAREEXCHANGEPOINTER(x,y,z) InterlockedCompareExchangePointer(x,y,z)
#endif // WIN95_RNG
#else
//#define __LOCK_TYPE KSPIN_LOCK
#define __LOCK_TYPE ERESOURCE
#define RNG_TAG 'cesK'
//#define INIT_LOCK(x) KeInitializeSpinLock( x )
//#define DELETE_LOCK(x)
//#define ENTER_LOCK(x) ExAcquireSpinLock( x, &OldIrql )
//#define LEAVE_LOCK(x) ExReleaseSpinLock( x, OldIrql )
#define ALLOC(cb) ExAllocatePoolWithTag(PagedPool, cb, RNG_TAG)
#define ALLOC_NP(cb) ExAllocatePoolWithTag(NonPagedPool, cb, RNG_TAG)
#define FREE(pv) ExFreePool(pv)
#define INIT_LOCK(x) ExInitializeResourceLite( x )
#define DELETE_LOCK(x) ExDeleteResourceLite( x )
#define ENTER_LOCK(x) KeEnterCriticalRegion(); ExAcquireResourceExclusiveLite( x, TRUE )
#define LEAVE_LOCK(x) ExReleaseResourceLite( x ); KeLeaveCriticalRegion()
#define REGCLOSEKEY(x) ZwClose( x )
#define INTERLOCKEDCOMPAREEXCHANGEPOINTER(x,y,z) InterlockedCompareExchangePointer(x,y,z)
#endif
#endif // __UMKM_H__