windows-nt/Source/XPSP1/NT/base/screg/winreg/client/support.c
2020-09-26 16:20:57 +08:00

83 lines
1.7 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
Support.c
Abstract:
This module contains support functions for the client side of the
Win32 Registry APIs. That is:
- MakeSemiUniqueName
Author:
David J. Gilman (davegi) 15-Nov-1991
--*/
#include <rpc.h>
#include "regrpc.h"
#include <stdio.h>
#define REG_SUNAME_FORMAT_STRING "Win32Reg.%08x.%08x"
BOOL
MakeSemiUniqueName (
OUT PUNICODE_STRING Name,
IN DWORD Sequence
)
/*++
Routine Description:
Forms a name that is very probably unique in the system, based on
the current process and thread id and a sequence provided by the
caller.
Arguments:
Name - Supplies a unicode string where the name will be put.
This string must contain a valid buffer of size
MAX_PATH * sizeof(WCHAR)
Sequence - Supplies a sequence number that will be appended to
the name. If a name happens not to be unique, the
caller can try again with other sequence numbers.
Return Value:
BOOL - Returns TRUE if a name was obtained.
--*/
{
CHAR NameBuffer[ MAX_PATH ];
ANSI_STRING AnsiName;
NTSTATUS NtStatus;
ASSERT( Name && Name->Buffer );
sprintf( NameBuffer,
REG_SUNAME_FORMAT_STRING,
HandleToUlong(NtCurrentTeb()->ClientId.UniqueProcess),
Sequence
);
RtlInitAnsiString( &AnsiName, NameBuffer );
NtStatus = RtlAnsiStringToUnicodeString(
Name,
&AnsiName,
FALSE
);
return NT_SUCCESS( NtStatus );
}