1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 /* 19 * $Id$ 20 */ 21 22 #include <windows.h> 23 24 #include <xercesc/util/MutexManagers/WindowsMutexMgr.hpp> 25 #include <xercesc/framework/MemoryManager.hpp> 26 27 XERCES_CPP_NAMESPACE_BEGIN 28 WindowsMutexMgr()29WindowsMutexMgr::WindowsMutexMgr() 30 { 31 } 32 33 ~WindowsMutexMgr()34WindowsMutexMgr::~WindowsMutexMgr() 35 { 36 } 37 38 39 XMLMutexHandle create(MemoryManager * const manager)40WindowsMutexMgr::create(MemoryManager* const manager) 41 { 42 CRITICAL_SECTION* newCS=(CRITICAL_SECTION*)manager->allocate(sizeof(CRITICAL_SECTION)); 43 InitializeCriticalSection(newCS); 44 return newCS; 45 } 46 47 48 void destroy(XMLMutexHandle mtx,MemoryManager * const manager)49WindowsMutexMgr::destroy(XMLMutexHandle mtx, MemoryManager* const manager) 50 { 51 ::DeleteCriticalSection((LPCRITICAL_SECTION)mtx); 52 manager->deallocate(mtx); 53 } 54 55 56 void lock(XMLMutexHandle mtx)57WindowsMutexMgr::lock(XMLMutexHandle mtx) 58 { 59 ::EnterCriticalSection((LPCRITICAL_SECTION)mtx); 60 } 61 62 63 void unlock(XMLMutexHandle mtx)64WindowsMutexMgr::unlock(XMLMutexHandle mtx) 65 { 66 ::LeaveCriticalSection((LPCRITICAL_SECTION)mtx); 67 } 68 69 70 XERCES_CPP_NAMESPACE_END 71 72