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
リリース関数