一个头文件就行了。
rw-lock.h
#pragma once
#define AcquireResource(pResource, bExclusive) \
{ \
KeEnterCriticalRegion(); \
if(bExclusive) \
ExAcquireResourceExclusiveLite(pResource, TRUE);\
else \
ExAcquireResourceSharedLite(pResource, TRUE); \
}
#define ReleaseResource(pResource) {ExReleaseResourceLite(pResource); KeLeaveCriticalRegion();}
//初始化
ERESOURCE g_RwLock;
ExInitializeResourceLite(&g_RwLock);
AcquireResource(&g_RwLock,FALSE);
//读操作
ReleaseResource(&g_RwLock);
AcquireResource(&g_RwLock,TRUE);
//写操作
ReleaseResource(&g_RwLock);