//+------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1993. // // File: srothint.cxx // // Contents: Implementation of classes used in implementing the ROT hint // table in the SCM. // // History: 20-Jan-95 Ricksa Created // //-------------------------------------------------------------------------- #include "act.hxx" //+------------------------------------------------------------------------- // // Member: CScmRotHintTable::CScmRotHintTable // // Synopsis: Create SCM ROT hint table // // Arguments: [pwszName] - name for shared memory // [psid] - security ID // // Algorithm: Create and map in shared memory for the hint table // // History: 20-Jan-95 Ricksa Created // //-------------------------------------------------------------------------- CScmRotHintTable::CScmRotHintTable(WCHAR *pwszName) { BOOL fCreated; PSECURITY_DESCRIPTOR pRotSecurityDescriptor = NULL; SID_IDENTIFIER_AUTHORITY SidAuthWorld = SECURITY_WORLD_SID_AUTHORITY; PSID pSid; pSid = 0; fCreated = AllocateAndInitializeSid( &SidAuthWorld, 1, 0, 0, 0, 0, 0, 0, 0, 0, &pSid ); ASSERT(fCreated && "CRotHintTable::CRotHintTable No SID"); if ( ! fCreated || ! pSid ) return; CAccessInfo AccessInfo(pSid); pRotSecurityDescriptor = AccessInfo.IdentifyAccess ( TRUE, FILE_MAP_READ, FILE_MAP_ALL_ACCESS ); _hSm = CreateSharedFileMapping(pwszName, SCM_HASH_SIZE, SCM_HASH_SIZE, NULL, pRotSecurityDescriptor, PAGE_READWRITE, (void **) &_pbHintArray, &fCreated); ASSERT(_hSm && "CRotHintTable::CRotHintTable create SM failed"); ASSERT(fCreated && "CRotHintTable::CRotHintTable Memory not created"); FreeSid( pSid ); if (_pbHintArray != NULL) { memset(_pbHintArray, 0, SCM_HASH_SIZE); } }