optex.h
来自「Windows核心编程(源码) Windows核心编程是讲解Windows 操」· C头文件 代码 · 共 83 行
H
83 行
/******************************************************************************
Module name: Optex.h
Written by: Jeffrey Richter
******************************************************************************/
#pragma once
///////////////////////////////////////////////////////////////////////////////
class COptex {
public:
COptex(DWORD dwSpinCount = 4000);
COptex(PCSTR pszName, DWORD dwSpinCount = 4000);
COptex(PCWSTR pszName, DWORD dwSpinCount = 4000);
~COptex();
void SetSpinCount(DWORD dwSpinCount);
void Enter();
BOOL TryEnter();
void Leave();
BOOL IsSingleProcessOptex() const;
private:
typedef struct {
DWORD m_dwSpinCount;
long m_lLockCount;
DWORD m_dwThreadId;
long m_lRecurseCount;
} SHAREDINFO, *PSHAREDINFO;
HANDLE m_hevt;
HANDLE m_hfm;
PSHAREDINFO m_psi;
private:
static BOOL sm_fUniprocessorHost;
private:
void CommonConstructor(DWORD dwSpinCount, BOOL fUnicode, PVOID pszName);
PSTR ConstructObjectName(PSTR pszResult,
PCSTR pszPrefix, BOOL fUnicode, PVOID pszName);
};
///////////////////////////////////////////////////////////////////////////////
inline COptex::COptex(DWORD dwSpinCount) {
CommonConstructor(dwSpinCount, FALSE, NULL);
}
///////////////////////////////////////////////////////////////////////////////
inline COptex::COptex(PCSTR pszName, DWORD dwSpinCount) {
CommonConstructor(dwSpinCount, FALSE, (PVOID) pszName);
}
///////////////////////////////////////////////////////////////////////////////
inline COptex::COptex(PCWSTR pszName, DWORD dwSpinCount) {
CommonConstructor(dwSpinCount, TRUE, (PVOID) pszName);
}
///////////////////////////////////////////////////////////////////////////////
inline COptex::IsSingleProcessOptex() const {
return(m_hfm == NULL);
}
///////////////////////////////// End of File /////////////////////////////////
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?