windows-nt/Source/XPSP1/NT/ds/netapi/svcimgs/ntrepl/util/guidname.c
2020-09-26 16:20:57 +08:00

263 lines
3.4 KiB
C

/*++
Copyright (c) 1997-1999 Microsoft Corporation
Module Name:
frsguid.c
Abstract:
These routines temporarily supply guids for replica sets and
servers.
Author:
Billy J. Fuller 06-May-1997
Environment
User mode winnt
--*/
#include <ntreppch.h>
#pragma hdrstop
#define DEBSUB "FRSGNAME:"
#include <frs.h>
PVOID
FrsFreeGName(
IN PVOID Arg
)
/*++
Routine Description:
Free a gname entry in a table
Arguments:
Arg - entry in table points to this value
Return Value:
None.
--*/
{
PGNAME GName = Arg;
if (GName) {
FrsFree(GName->Guid);
FrsFree(GName->Name);
FrsFree(GName);
}
return NULL;
}
PGNAME
FrsBuildGName(
IN OPTIONAL GUID *Guid,
IN OPTIONAL PWCHAR Name
)
/*++
Routine Description:
Build a GName
Arguments:
Guid - address of a binary guid
Name - printable name
Return Value:
Address of a GName that points to Guid and Name.
--*/
{
PGNAME GName;
GName = FrsAlloc(sizeof(GNAME));
GName->Guid = Guid;
GName->Name = Name;
return GName;
}
PGVSN
FrsBuildGVsn(
IN OPTIONAL GUID *Guid,
IN ULONGLONG Vsn
)
/*++
Routine Description:
Build a gusn
Arguments:
Guid
Vsn
Return Value:
Address of a gusn
--*/
{
PGVSN GVsn;
GVsn = FrsAlloc(sizeof(GVSN));
COPY_GUID(&GVsn->Guid, Guid);
GVsn->Vsn = Vsn;
return GVsn;
}
PGNAME
FrsDupGName(
IN PGNAME SrcGName
)
/*++
Routine Description:
Duplicate a gstring
Arguments:
OrigGName
Return Value:
None.
--*/
{
PGNAME GName;
//
// nothing to do
//
if (!SrcGName)
return NULL;
GName = FrsAlloc(sizeof(GNAME));
//
// guid
//
if (SrcGName->Guid) {
GName->Guid = FrsAlloc(sizeof(GUID));
COPY_GUID(GName->Guid, SrcGName->Guid);
}
//
// name
//
if (SrcGName->Name)
GName->Name = FrsWcsDup(SrcGName->Name);
//
// done
//
return GName;
}
GUID *
FrsDupGuid(
IN GUID *Guid
)
/*++
Routine Description:
Duplicate a guid
Arguments:
Guid
Return Value:
None.
--*/
{
GUID *NewGuid;
//
// nothing to do
//
if (!Guid)
return NULL;
NewGuid = FrsAlloc(sizeof(GUID));
COPY_GUID(NewGuid, Guid);
//
// done
//
return NewGuid;
}
PGNAME
FrsCopyGName(
IN GUID *Guid,
IN PWCHAR Name
)
/*++
Routine Description:
Allocate a gname and duplicate the guid and name into it
Arguments:
Guid
Name
Return Value:
None.
--*/
{
PGNAME GName;
GName = FrsAlloc(sizeof(GNAME));
//
// guid
//
if (Guid) {
GName->Guid = FrsAlloc(sizeof(GUID));
COPY_GUID(GName->Guid, Guid);
}
//
// name
//
if (Name)
GName->Name = FrsWcsDup(Name);
//
// done
//
return GName;
}
VOID
FrsPrintGName(
IN PGNAME GName
)
/*++
Routine Description:
Print a gname
Arguments:
GName
Return Value:
None.
--*/
{
CHAR Guid[GUID_CHAR_LEN + 1];
//
// print the GName
//
GuidToStr(GName->Guid, &Guid[0]);
DPRINT2(0, "%ws %s\n", GName->Name, Guid);
}
VOID
FrsPrintGuid(
IN GUID *Guid
)
/*++
Routine Description:
Print a guid
Arguments:
Guid
Return Value:
None.
--*/
{
CHAR PGuid[GUID_CHAR_LEN + 1];
//
// print the GName
//
GuidToStr(Guid, &PGuid[0]);
DPRINT1(0, "%s\n", PGuid);
}