13 #pragma managed( push, off ) 54 return Create( 1, 1, pszObjectName );
70 wchar_t szBuffer[ MAX_PATH ];
71 if (
nullptr != pszObjectName ) {
73 ::wcscpy_s( szBuffer, pszObjectName );
75 pszObjectName = szBuffer;
79 m_hObject = ::CreateSemaphoreW(
nullptr, nInitial, nMax, pszObjectName );
85 else if ( ERROR_ALREADY_EXISTS != ::GetLastError() ) {
105 if (
nullptr == pszObjectName ) {
116 wchar_t szBuffer[ MAX_PATH ];
117 ::wcscpy_s( szBuffer, pszObjectName );
119 pszObjectName = szBuffer;
122 m_hObject = ::OpenSemaphoreW( SEMAPHORE_ALL_ACCESS,
false, pszObjectName );
143 if ( 0 == ::ReleaseSemaphore(
m_hObject, nCount, &rnPrev ) ) {
161 #pragma managed( pop ) virtual void Close() noexcept
クローズ関数
virtual bool AddCount(long nCount, long &rnPrev) noexcept
カウント加算関数
virtual bool Open(wchar_t const *pszObjectName) noexcept
オープン関数
virtual bool Create(wchar_t const *pszObjectName=nullptr) noexcept
作成関数
static wchar_t const *const OBJECT_NAME_EXT
オブジェクト名拡張子
CSemaphore() noexcept
コンストラクタ
HANDLE m_hObject
オブジェクトハンドル
virtual bool Release() noexcept override
リリース関数