Files
admin
base
com
componentdef
inc
mobile
mts
netfxoc
ole2ui32
ole32
oleutest
published
rpc
locator
client
autohand.cxx
cbind.cxx
makefile
mem.c
nsi.h
nsiclnt.cxx
nsimgmt.cxx
nsisvr.cxx
nsiutil.hxx
ntutil.cxx
rpcns4.def
rpcns4.rc
sbind.cxx
sources
startsvc.c
startsvc.h
util.cxx
drt
idl
nsserver
dirs
midl
ndr20
ndr64
ndrexts
ndrlib
ndrmem
perf
rpccfg
runtime
tools
uuidgen
dirs
project.mk
rpcutil
svcdlls
winole
dirs
makefil0
project.mk
developer
drivers
ds
enduser
inetcore
inetsrv
loc
mergedcomponents
multimedia
net
printscan
public
published
sdktools
shell
termsrv
tools
windows
dirs
makefil0
2025-04-27 07:49:33 -04:00

195 lines
3.2 KiB
C++

/*++
Copyright (C) Microsoft Corporation, 1992 - 1999
Module Name:
nsiutil.hxx
Abstract:
This module contains utility functions used by the NSI client wrappers.
Author:
Steven Zeck (stevez) 03/27/92
--*/
#define UNUSED(t) (void) t
extern "C" {
#if !defined(NTENV)
#ifdef DBG
void
RtlAssert(
void * FailedAssertion,
void * FileName,
unsigned long LineNumber,
char * Message
);
#define ASSERT( exp ) \
if (!(exp)) \
RtlAssert( #exp, __FILE__, __LINE__, 0 )
#else
#define ASSERT( exp )
#endif
#endif
}
unsigned char *
CopyString(
IN char * String
);
unsigned char *
RegGetString(
IN void * RegHandle,
IN char * KeyName
);
void
GetDefaultEntrys(
IN void * Key
);
#ifdef NTENV
extern void
GlobalMutexRequest (
void
);
extern void
GlobalMutexClear (
void
);
#define RequestGlobalMutex() GlobalMutexRequest()
#define ClearGlobalMutex() GlobalMutexClear()
#else
#define RequestGlobalMutex()
#define ClearGlobalMutex()
#endif
extern RPC_STATUS NsiToRpcStatus[];
inline RPC_STATUS
NsiMapStatus(
IN UNSIGNED16 Status
)
{
ASSERT(Status < NSI_S_STATUS_MAX);
return((Status < NSI_S_STATUS_MAX)?
NsiToRpcStatus[Status]: RPC_S_INTERNAL_ERROR);
}
/*++
Class Definition:
WIDE_STRING
Abstract:
This class abstracts the creation of unicode strings. It is normaly
used as an automatic variable to a wrapper function that has an
ASCII interface over a UNICODE one.
--*/
class WIDE_STRING
{
private:
typedef enum { // Indicate how the string was allocated
AllocMemory, // Allocated memory, which must be freed
AllocReference, // Referenced a existing UNICODE string
AllocError // Out of memory indicator
} ALLOC_TYPE;
unsigned short * String; // Unicode string
ALLOC_TYPE AllocMode; // Allocation type
public:
// Construct a unicode string from a ASCII or UNICODE
WIDE_STRING(
IN unsigned char * String
);
WIDE_STRING(
IN unsigned short * StringIn
)
{
AllocMode = AllocReference;
String = StringIn;
}
~WIDE_STRING()
{
if (AllocMode == AllocMemory)
I_RpcFree(String);
}
// Check to see of constructor failed due to out of memory.
int
OutOfMemory(
)
{
return(AllocMode == AllocError);
}
// Return a pointer to the string.
unsigned short *
operator &()
{
return(String);
}
};
#ifdef NTENV
#define UnicodeToRtString(UnicodeString) RPC_S_OK
void
AsciiToUnicodeNT(
OUT unsigned short *String,
IN unsigned char *AsciiString
);
#else
#define UnicodeToRtString(UnicodeString) UnicodeToAscii(UnicodeString)
#endif
int
UnicodeToAscii(
unsigned short *UnicodeString
);
UNSIGNED16
MapException(
IN RPC_STATUS Exception
);
extern WIDE_STRING *DefaultName;
extern long DefaultSyntax;
extern int fSyntaxDefaultsLoaded;