windows-nt/Source/XPSP1/NT/com/rpc/runtime/mtrt/uuidsup.hxx
2020-09-26 16:20:57 +08:00

82 lines
1.7 KiB
C++

/*++
Copyright (C) Microsoft Corporation, 1994 - 1999
Module Name:
uuidsup.hxx
Abstract:
Data structures and functions avaliable in uuidsup.cxx
This file is shared between all systems.
Author:
Mario Goertzel (MarioGo) May 25, 1994
Revision History:
--*/
#ifndef __UUIDSUP_HXX__
#define __UUIDSUP_HXX__
#define KERNEL_UUIDS
// This is the "true" OSF DCE format for Uuids. We use this
// when generating Uuids. The NodeId is faked on systems w/o
// a netcard.
typedef struct _RPC_UUID_GENERATE
{
unsigned long TimeLow;
unsigned short TimeMid;
unsigned short TimeHiAndVersion;
unsigned char ClockSeqHiAndReserved;
unsigned char ClockSeqLow;
unsigned char NodeId[6];
} RPC_UUID_GENERATE;
#ifdef MPPC
#define InterlockedDecrement(x) ((x)--)
#endif
#define RPC_UUID_TIME_HIGH_MASK 0x0FFF
#define RPC_UUID_VERSION 0x1000
#define RPC_RAND_UUID_VERSION 0x4000
#define RPC_UUID_RESERVED 0x80
#define RPC_UUID_CLOCK_SEQ_HI_MASK 0x3F
typedef struct _UUID_CACHED_VALUES_STRUCT
{
ULARGE_INTEGER Time; // Time of last uuid allocation
long AllocatedCount; // Number of UUIDs allocated
unsigned char ClockSeqHiAndReserved;
unsigned char ClockSeqLow;
unsigned char NodeId[6];
} UUID_CACHED_VALUES_STRUCT;
RPC_STATUS __RPC_API
UuidGlobalMutexRequest(void);
void __RPC_API
UuidGlobalMutexClear(void);
#ifdef KERNEL_UUIDS
#define UuidGlobalMutexRequest() RPC_S_OK
#define UuidGlobalMutexClear()
#endif
RPC_STATUS __RPC_API
GetNodeId(unsigned char __RPC_FAR *NodeId);
RPC_STATUS __RPC_API
UuidGetValues(UUID_CACHED_VALUES_STRUCT __RPC_FAR *);
#endif // __UUIDSUP_HXX__