83 lines
1.7 KiB
C++
83 lines
1.7 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1991 - 1999
|
|
//
|
|
// File: svrapip.cxx
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
/* --------------------------------------------------------------------
|
|
|
|
Microsoft OS/2 LAN Manager
|
|
Copyright(c) Microsoft Corp., 1990
|
|
|
|
-------------------------------------------------------------------- */
|
|
/* --------------------------------------------------------------------
|
|
|
|
File : svrapip.cxx
|
|
|
|
Description :
|
|
|
|
This file contains the private entry points into the server runtime.
|
|
|
|
History :
|
|
|
|
mikemon 02-02-91 Created.
|
|
|
|
-------------------------------------------------------------------- */
|
|
|
|
#include <precomp.hxx>
|
|
|
|
void RPC_ENTRY
|
|
I_RpcRequestMutex (
|
|
IN OUT I_RPC_MUTEX * Mutex
|
|
)
|
|
{
|
|
if (*Mutex == 0)
|
|
{
|
|
RPC_STATUS RpcStatus = RPC_S_OK;
|
|
|
|
MUTEX *mutex = new MUTEX(&RpcStatus);
|
|
|
|
if ( NULL == mutex )
|
|
{
|
|
RpcpRaiseException(RPC_S_OUT_OF_MEMORY);
|
|
return;
|
|
}
|
|
|
|
if ( RpcStatus != RPC_S_OK )
|
|
{
|
|
delete mutex;
|
|
RpcpRaiseException(RPC_S_OUT_OF_MEMORY);
|
|
return;
|
|
}
|
|
|
|
if (InterlockedCompareExchangePointer(Mutex, mutex, NULL) != NULL)
|
|
{
|
|
delete mutex;
|
|
}
|
|
}
|
|
|
|
((MUTEX *) (*Mutex))->Request();
|
|
}
|
|
|
|
void RPC_ENTRY
|
|
I_RpcClearMutex (
|
|
IN I_RPC_MUTEX Mutex
|
|
)
|
|
{
|
|
((MUTEX *) Mutex)->Clear();
|
|
}
|
|
|
|
void RPC_ENTRY
|
|
I_RpcDeleteMutex (
|
|
IN I_RPC_MUTEX Mutex
|
|
)
|
|
{
|
|
delete ((MUTEX *) Mutex);
|
|
}
|
|
|
|
|