- More NDK + MSDDK/IFS Compatibility fixes

- Prototype fixes

svn path=/trunk/; revision=17660
This commit is contained in:
Alex Ionescu 2005-09-05 18:06:20 +00:00
parent 94a3a9e377
commit 87507a864e
16 changed files with 592 additions and 340 deletions

File diff suppressed because it is too large Load diff

View file

@ -100,6 +100,10 @@
#define HASH_STRING_ALGORITHM_X65599 1 #define HASH_STRING_ALGORITHM_X65599 1
#define HASH_STRING_ALGORITHM_INVALID 0xffffffff #define HASH_STRING_ALGORITHM_INVALID 0xffffffff
/* RtlDuplicateString settings */
#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
/* List Macros */ /* List Macros */
static __inline static __inline
VOID VOID
@ -264,6 +268,10 @@ typedef enum
} DOS_PATHNAME_TYPE; } DOS_PATHNAME_TYPE;
/* FUNCTION TYPES ************************************************************/ /* FUNCTION TYPES ************************************************************/
#ifndef NTOS_MODE_USER
typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC)(PVOID, BOOLEAN);
#endif
struct _RTL_AVL_TABLE; struct _RTL_AVL_TABLE;
struct _RTL_GENERIC_TABLE; struct _RTL_GENERIC_TABLE;
struct _RTL_RANGE; struct _RTL_RANGE;

View file

@ -15,7 +15,7 @@
* CSR Functions * CSR Functions
*/ */
NTSTATUS NTSTATUS
STDCALL NTAPI
CsrClientConnectToServer( CsrClientConnectToServer(
PWSTR ObjectDirectory, PWSTR ObjectDirectory,
ULONG ServerId, ULONG ServerId,
@ -27,7 +27,7 @@ CsrClientConnectToServer(
struct _CSR_API_MESSAGE; struct _CSR_API_MESSAGE;
NTSTATUS NTSTATUS
STDCALL NTAPI
CsrClientCallServer( CsrClientCallServer(
struct _CSR_API_MESSAGE *Request, struct _CSR_API_MESSAGE *Request,
PVOID CapturedBuffer OPTIONAL, PVOID CapturedBuffer OPTIONAL,
@ -36,22 +36,22 @@ CsrClientCallServer(
); );
NTSTATUS NTSTATUS
STDCALL NTAPI
CsrIdentifyAlertableThread(VOID); CsrIdentifyAlertableThread(VOID);
NTSTATUS NTSTATUS
STDCALL NTAPI
CsrNewThread(VOID); CsrNewThread(VOID);
NTSTATUS NTSTATUS
STDCALL NTAPI
CsrSetPriorityClass( CsrSetPriorityClass(
HANDLE Process, HANDLE Process,
PULONG PriorityClass PULONG PriorityClass
); );
VOID VOID
STDCALL NTAPI
CsrProbeForRead( CsrProbeForRead(
IN CONST PVOID Address, IN CONST PVOID Address,
IN ULONG Length, IN ULONG Length,
@ -59,7 +59,7 @@ CsrProbeForRead(
); );
VOID VOID
STDCALL NTAPI
CsrProbeForWrite( CsrProbeForWrite(
IN CONST PVOID Address, IN CONST PVOID Address,
IN ULONG Length, IN ULONG Length,
@ -67,7 +67,7 @@ CsrProbeForWrite(
); );
NTSTATUS NTSTATUS
STDCALL NTAPI
CsrCaptureParameterBuffer( CsrCaptureParameterBuffer(
PVOID ParameterBuffer, PVOID ParameterBuffer,
ULONG ParameterBufferSize, ULONG ParameterBufferSize,
@ -76,25 +76,25 @@ CsrCaptureParameterBuffer(
); );
NTSTATUS NTSTATUS
STDCALL NTAPI
CsrReleaseParameterBuffer(PVOID ClientAddress); CsrReleaseParameterBuffer(PVOID ClientAddress);
/* /*
* Debug Functions * Debug Functions
*/ */
ULONG ULONG
CDECL __cdecl
DbgPrint( DbgPrint(
IN PCH Format, IN PCH Format,
IN ... IN ...
); );
VOID VOID
STDCALL NTAPI
DbgBreakPoint(VOID); DbgBreakPoint(VOID);
NTSTATUS NTSTATUS
STDCALL NTAPI
DbgSsInitialize( DbgSsInitialize(
HANDLE ReplyPort, HANDLE ReplyPort,
PVOID Callback, PVOID Callback,
@ -103,40 +103,40 @@ DbgSsInitialize(
); );
NTSTATUS NTSTATUS
STDCALL NTAPI
DbgUiConnectToDbg(VOID); DbgUiConnectToDbg(VOID);
NTSTATUS NTSTATUS
STDCALL NTAPI
DbgUiContinue( DbgUiContinue(
PCLIENT_ID ClientId, PCLIENT_ID ClientId,
ULONG ContinueStatus ULONG ContinueStatus
); );
NTSTATUS NTSTATUS
STDCALL NTAPI
DbgUiWaitStateChange( DbgUiWaitStateChange(
ULONG Unknown1, ULONG Unknown1,
ULONG Unknown2 ULONG Unknown2
); );
VOID VOID
STDCALL NTAPI
DbgUiRemoteBreakin(VOID); DbgUiRemoteBreakin(VOID);
NTSTATUS NTSTATUS
STDCALL NTAPI
DbgUiIssueRemoteBreakin(HANDLE Process); DbgUiIssueRemoteBreakin(HANDLE Process);
/* /*
* Loader Functions * Loader Functions
*/ */
NTSTATUS NTSTATUS
STDCALL NTAPI
LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress); LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress);
NTSTATUS NTSTATUS
STDCALL NTAPI
LdrGetDllHandle( LdrGetDllHandle(
IN PWSTR DllPath OPTIONAL, IN PWSTR DllPath OPTIONAL,
IN PULONG DllCharacteristics, IN PULONG DllCharacteristics,
@ -145,14 +145,14 @@ LdrGetDllHandle(
); );
NTSTATUS NTSTATUS
STDCALL NTAPI
LdrFindEntryForAddress( LdrFindEntryForAddress(
IN PVOID Address, IN PVOID Address,
OUT PLDR_DATA_TABLE_ENTRY *Module OUT PLDR_DATA_TABLE_ENTRY *Module
); );
NTSTATUS NTSTATUS
STDCALL NTAPI
LdrGetProcedureAddress( LdrGetProcedureAddress(
IN PVOID BaseAddress, IN PVOID BaseAddress,
IN PANSI_STRING Name, IN PANSI_STRING Name,
@ -161,7 +161,7 @@ LdrGetProcedureAddress(
); );
VOID VOID
STDCALL NTAPI
LdrInitializeThunk( LdrInitializeThunk(
ULONG Unknown1, ULONG Unknown1,
ULONG Unknown2, ULONG Unknown2,
@ -170,7 +170,7 @@ LdrInitializeThunk(
); );
NTSTATUS NTSTATUS
STDCALL NTAPI
LdrLoadDll( LdrLoadDll(
IN PWSTR SearchPath OPTIONAL, IN PWSTR SearchPath OPTIONAL,
IN ULONG LoadFlags, IN ULONG LoadFlags,
@ -179,7 +179,7 @@ LdrLoadDll(
); );
PIMAGE_BASE_RELOCATION PIMAGE_BASE_RELOCATION
STDCALL NTAPI
LdrProcessRelocationBlock( LdrProcessRelocationBlock(
IN PVOID Address, IN PVOID Address,
IN USHORT Count, IN USHORT Count,
@ -188,7 +188,7 @@ LdrProcessRelocationBlock(
); );
NTSTATUS NTSTATUS
STDCALL NTAPI
LdrQueryImageFileExecutionOptions( LdrQueryImageFileExecutionOptions(
IN PUNICODE_STRING SubKey, IN PUNICODE_STRING SubKey,
IN PCWSTR ValueName, IN PCWSTR ValueName,
@ -199,7 +199,7 @@ LdrQueryImageFileExecutionOptions(
); );
NTSTATUS NTSTATUS
STDCALL NTAPI
LdrQueryProcessModuleInformation( LdrQueryProcessModuleInformation(
IN PMODULE_INFORMATION ModuleInformation OPTIONAL, IN PMODULE_INFORMATION ModuleInformation OPTIONAL,
IN ULONG Size OPTIONAL, IN ULONG Size OPTIONAL,
@ -207,19 +207,19 @@ LdrQueryProcessModuleInformation(
); );
NTSTATUS NTSTATUS
STDCALL NTAPI
LdrShutdownProcess(VOID); LdrShutdownProcess(VOID);
NTSTATUS NTSTATUS
STDCALL NTAPI
LdrShutdownThread(VOID); LdrShutdownThread(VOID);
NTSTATUS NTSTATUS
STDCALL NTAPI
LdrUnloadDll(IN PVOID BaseAddress); LdrUnloadDll(IN PVOID BaseAddress);
NTSTATUS NTSTATUS
STDCALL NTAPI
LdrVerifyImageMatchesChecksum( LdrVerifyImageMatchesChecksum(
IN HANDLE FileHandle, IN HANDLE FileHandle,
ULONG Unknown1, ULONG Unknown1,

View file

@ -129,5 +129,8 @@ typedef STRING ANSI_STRING;
typedef PSTRING PANSI_STRING; typedef PSTRING PANSI_STRING;
typedef STRING OEM_STRING; typedef STRING OEM_STRING;
typedef PSTRING POEM_STRING; typedef PSTRING POEM_STRING;
typedef CONST STRING* PCOEM_STRING;
typedef STRING CANSI_STRING;
typedef PSTRING PCANSI_STRING;
#endif #endif

View file

@ -423,7 +423,7 @@ GetAce (
Status = RtlGetAce (pAcl, Status = RtlGetAce (pAcl,
dwAceIndex, dwAceIndex,
(PACE*)pAce); pAce);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
SetLastError (RtlNtStatusToDosError (Status)); SetLastError (RtlNtStatusToDosError (Status));

View file

@ -245,7 +245,7 @@ MakeAbsoluteSD (
{ {
NTSTATUS Status; NTSTATUS Status;
Status = RtlSelfRelativeToAbsoluteSD ((PISECURITY_DESCRIPTOR_RELATIVE)pSelfRelativeSecurityDescriptor, Status = RtlSelfRelativeToAbsoluteSD (pSelfRelativeSecurityDescriptor,
pAbsoluteSecurityDescriptor, pAbsoluteSecurityDescriptor,
lpdwAbsoluteSecurityDescriptorSize, lpdwAbsoluteSecurityDescriptorSize,
pDacl, pDacl,
@ -280,7 +280,7 @@ MakeSelfRelativeSD (
NTSTATUS Status; NTSTATUS Status;
Status = RtlAbsoluteToSelfRelativeSD (pAbsoluteSecurityDescriptor, Status = RtlAbsoluteToSelfRelativeSD (pAbsoluteSecurityDescriptor,
(PISECURITY_DESCRIPTOR_RELATIVE)pSelfRelativeSecurityDescriptor, pSelfRelativeSecurityDescriptor,
(PULONG)lpdwBufferLength); (PULONG)lpdwBufferLength);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {

View file

@ -182,7 +182,7 @@ STDCALL
SetFileApisToOEM(VOID) SetFileApisToOEM(VOID)
{ {
/* Set the correct Base Api */ /* Set the correct Base Api */
Basep8BitStringToUnicodeString = RtlOemStringToUnicodeString; Basep8BitStringToUnicodeString = (PRTL_CONVERT_STRING)RtlOemStringToUnicodeString;
/* FIXME: Old, deprecated way */ /* FIXME: Old, deprecated way */
bIsFileApiAnsi = FALSE; bIsFileApiAnsi = FALSE;

View file

@ -151,7 +151,7 @@ Basep8BitStringToHeapUnicodeString(OUT PUNICODE_STRING UnicodeString,
IN LPCSTR String); IN LPCSTR String);
typedef NTSTATUS (STDCALL *PRTL_CONVERT_STRING)(IN PUNICODE_STRING UnicodeString, typedef NTSTATUS (STDCALL *PRTL_CONVERT_STRING)(IN PUNICODE_STRING UnicodeString,
IN PANSI_STRING AnsiString, IN PCANSI_STRING AnsiString,
IN BOOLEAN AllocateMemory); IN BOOLEAN AllocateMemory);
extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString; extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString;

View file

@ -69,7 +69,7 @@ RtlFirstFreeAce(PACL Acl,
NTSTATUS STDCALL NTSTATUS STDCALL
RtlGetAce(PACL Acl, RtlGetAce(PACL Acl,
ULONG AceIndex, ULONG AceIndex,
PACE *Ace) PVOID *Ace)
{ {
ULONG i; ULONG i;
@ -82,7 +82,7 @@ RtlGetAce(PACL Acl,
return(STATUS_INVALID_PARAMETER); return(STATUS_INVALID_PARAMETER);
} }
*Ace = (PACE)(Acl + 1); *Ace = (PVOID)((PACE)(Acl + 1));
for (i = 0; i < AceIndex; i++) for (i = 0; i < AceIndex; i++)
{ {
@ -90,7 +90,7 @@ RtlGetAce(PACL Acl,
{ {
return(STATUS_INVALID_PARAMETER); return(STATUS_INVALID_PARAMETER);
} }
*Ace = (PACE)((ULONG_PTR)(*Ace) + (*Ace)->Header.AceSize); *Ace = (PVOID)((PACE)((ULONG_PTR)(*Ace) + ((PACE)(*Ace))->Header.AceSize));
} }
if ((ULONG_PTR)*Ace >= (ULONG_PTR)Acl + Acl->AclSize) if ((ULONG_PTR)*Ace >= (ULONG_PTR)Acl + Acl->AclSize)
@ -262,7 +262,7 @@ NTSTATUS STDCALL
RtlAddAce(PACL Acl, RtlAddAce(PACL Acl,
ULONG AclRevision, ULONG AclRevision,
ULONG StartingIndex, ULONG StartingIndex,
PACE AceList, PVOID AceList,
ULONG AceListLength) ULONG AceListLength)
{ {
PACE Ace; PACE Ace;
@ -294,7 +294,7 @@ RtlAddAce(PACL Acl,
Current = (PACE)((ULONG_PTR)Current + Current->Header.AceSize), Current = (PACE)((ULONG_PTR)Current + Current->Header.AceSize),
++NewAceCount) ++NewAceCount)
{ {
if (AceList->Header.AceType == ACCESS_ALLOWED_COMPOUND_ACE_TYPE && if (((PACE)AceList)->Header.AceType == ACCESS_ALLOWED_COMPOUND_ACE_TYPE &&
AclRevision < ACL_REVISION3) AclRevision < ACL_REVISION3)
{ {
return(STATUS_INVALID_PARAMETER); return(STATUS_INVALID_PARAMETER);

View file

@ -243,7 +243,7 @@ RtlMultiByteToUnicodeN(
IN PWCHAR UnicodeString, IN PWCHAR UnicodeString,
IN ULONG UnicodeSize, IN ULONG UnicodeSize,
IN PULONG ResultSize, IN PULONG ResultSize,
IN PCHAR MbString, IN PCSTR MbString,
IN ULONG MbSize) IN ULONG MbSize)
{ {
ULONG Size = 0; ULONG Size = 0;
@ -280,7 +280,7 @@ RtlMultiByteToUnicodeN(
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
RtlMultiByteToUnicodeSize(PULONG UnicodeSize, RtlMultiByteToUnicodeSize(PULONG UnicodeSize,
PCHAR MbString, PCSTR MbString,
ULONG MbSize) ULONG MbSize)
{ {
ULONG Length; ULONG Length;

View file

@ -514,7 +514,7 @@ RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR AbsSD,
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
RtlAbsoluteToSelfRelativeSD(PSECURITY_DESCRIPTOR AbsSD, RtlAbsoluteToSelfRelativeSD(PSECURITY_DESCRIPTOR AbsSD,
PISECURITY_DESCRIPTOR_RELATIVE RelSD, PSECURITY_DESCRIPTOR RelSD,
PULONG BufferLength) PULONG BufferLength)
{ {
PAGED_CODE_RTL(); PAGED_CODE_RTL();
@ -524,7 +524,7 @@ RtlAbsoluteToSelfRelativeSD(PSECURITY_DESCRIPTOR AbsSD,
return STATUS_BAD_DESCRIPTOR_FORMAT; return STATUS_BAD_DESCRIPTOR_FORMAT;
} }
return RtlMakeSelfRelativeSD(AbsSD, RelSD, BufferLength); return RtlMakeSelfRelativeSD(AbsSD, (PISECURITY_DESCRIPTOR_RELATIVE)RelSD, BufferLength);
} }
@ -655,7 +655,7 @@ RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
* @implemented * @implemented
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
RtlSelfRelativeToAbsoluteSD(PISECURITY_DESCRIPTOR_RELATIVE RelSD, RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR RelSD,
PSECURITY_DESCRIPTOR AbsSD, PSECURITY_DESCRIPTOR AbsSD,
PDWORD AbsSDSize, PDWORD AbsSDSize,
PACL Dacl, PACL Dacl,
@ -688,7 +688,7 @@ RtlSelfRelativeToAbsoluteSD(PISECURITY_DESCRIPTOR_RELATIVE RelSD,
return STATUS_BAD_DESCRIPTOR_FORMAT; return STATUS_BAD_DESCRIPTOR_FORMAT;
} }
RtlpQuerySecurityDescriptor ((PSECURITY_DESCRIPTOR)RelSD, RtlpQuerySecurityDescriptor (RelSD,
&pOwner, &pOwner,
&OwnerLength, &OwnerLength,
&pGroup, &pGroup,
@ -744,7 +744,7 @@ RtlSelfRelativeToAbsoluteSD2(PISECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurity
* @implemented * @implemented
*/ */
BOOLEAN STDCALL BOOLEAN STDCALL
RtlValidRelativeSecurityDescriptor(IN PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput, RtlValidRelativeSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptorInput,
IN ULONG SecurityDescriptorLength, IN ULONG SecurityDescriptorLength,
IN SECURITY_INFORMATION RequiredInformation) IN SECURITY_INFORMATION RequiredInformation)
{ {

View file

@ -41,7 +41,7 @@ RtlValidSid(IN PSID Sid_)
* @implemented * @implemented
*/ */
ULONG STDCALL ULONG STDCALL
RtlLengthRequiredSid(IN UCHAR SubAuthorityCount) RtlLengthRequiredSid(IN ULONG SubAuthorityCount)
{ {
PAGED_CODE_RTL(); PAGED_CODE_RTL();

View file

@ -125,7 +125,7 @@ NTSTATUS
STDCALL STDCALL
RtlAppendUnicodeStringToString( RtlAppendUnicodeStringToString(
IN OUT PUNICODE_STRING Destination, IN OUT PUNICODE_STRING Destination,
IN PUNICODE_STRING Source) IN PCUNICODE_STRING Source)
{ {
if ((Source->Length + Destination->Length) > Destination->MaximumLength) if ((Source->Length + Destination->Length) > Destination->MaximumLength)
@ -724,8 +724,8 @@ RtlPrefixString(
BOOLEAN BOOLEAN
STDCALL STDCALL
RtlPrefixUnicodeString( RtlPrefixUnicodeString(
PUNICODE_STRING String1, PCUNICODE_STRING String1,
PUNICODE_STRING String2, PCUNICODE_STRING String2,
BOOLEAN CaseInsensitive) BOOLEAN CaseInsensitive)
{ {
PWCHAR pc1; PWCHAR pc1;
@ -792,7 +792,7 @@ RtlPrefixUnicodeString(
NTSTATUS NTSTATUS
STDCALL STDCALL
RtlUnicodeStringToInteger( RtlUnicodeStringToInteger(
PUNICODE_STRING str, /* [I] Unicode string to be converted */ PCUNICODE_STRING str, /* [I] Unicode string to be converted */
ULONG base, /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */ ULONG base, /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */
PULONG value) /* [O] Destination for the converted value */ PULONG value) /* [O] Destination for the converted value */
{ {
@ -907,7 +907,7 @@ NTSTATUS
STDCALL STDCALL
RtlUnicodeStringToAnsiString( RtlUnicodeStringToAnsiString(
IN OUT PANSI_STRING AnsiDest, IN OUT PANSI_STRING AnsiDest,
IN PUNICODE_STRING UniSource, IN PCUNICODE_STRING UniSource,
IN BOOLEAN AllocateDestinationString) IN BOOLEAN AllocateDestinationString)
{ {
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
@ -915,7 +915,7 @@ RtlUnicodeStringToAnsiString(
if (NlsMbCodePageTag == TRUE) if (NlsMbCodePageTag == TRUE)
{ {
Length = RtlUnicodeStringToAnsiSize(UniSource); Length = RtlUnicodeStringToAnsiSize((PUNICODE_STRING)UniSource);
} }
else else
Length = (UniSource->Length / sizeof(WCHAR)) + sizeof(CHAR); Length = (UniSource->Length / sizeof(WCHAR)) + sizeof(CHAR);
@ -968,14 +968,14 @@ NTSTATUS
STDCALL STDCALL
RtlOemStringToUnicodeString( RtlOemStringToUnicodeString(
IN OUT PUNICODE_STRING UniDest, IN OUT PUNICODE_STRING UniDest,
IN POEM_STRING OemSource, IN PCOEM_STRING OemSource,
IN BOOLEAN AllocateDestinationString) IN BOOLEAN AllocateDestinationString)
{ {
NTSTATUS Status; NTSTATUS Status;
ULONG Length; /* including nullterm */ ULONG Length; /* including nullterm */
if (NlsMbOemCodePageTag == TRUE) if (NlsMbOemCodePageTag == TRUE)
Length = RtlOemStringToUnicodeSize(OemSource); Length = RtlOemStringToUnicodeSize((POEM_STRING)OemSource);
else else
Length = (OemSource->Length * sizeof(WCHAR)) + sizeof(WCHAR); Length = (OemSource->Length * sizeof(WCHAR)) + sizeof(WCHAR);
@ -1029,14 +1029,14 @@ NTSTATUS
STDCALL STDCALL
RtlUnicodeStringToOemString( RtlUnicodeStringToOemString(
IN OUT POEM_STRING OemDest, IN OUT POEM_STRING OemDest,
IN PUNICODE_STRING UniSource, IN PCUNICODE_STRING UniSource,
IN BOOLEAN AllocateDestinationString) IN BOOLEAN AllocateDestinationString)
{ {
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
ULONG Length; //including nullterm ULONG Length; //including nullterm
if (NlsMbOemCodePageTag == TRUE) if (NlsMbOemCodePageTag == TRUE)
Length = RtlUnicodeStringToAnsiSize (UniSource); Length = RtlUnicodeStringToAnsiSize ((PUNICODE_STRING)UniSource);
else else
Length = (UniSource->Length / sizeof(WCHAR)) + sizeof(CHAR); Length = (UniSource->Length / sizeof(WCHAR)) + sizeof(CHAR);
@ -1152,14 +1152,14 @@ NTSTATUS
STDCALL STDCALL
RtlOemStringToCountedUnicodeString( RtlOemStringToCountedUnicodeString(
IN OUT PUNICODE_STRING UniDest, IN OUT PUNICODE_STRING UniDest,
IN POEM_STRING OemSource, IN PCOEM_STRING OemSource,
IN BOOLEAN AllocateDestinationString) IN BOOLEAN AllocateDestinationString)
{ {
NTSTATUS Status; NTSTATUS Status;
ULONG Length; /* excluding nullterm */ ULONG Length; /* excluding nullterm */
if (NlsMbCodePageTag == TRUE) if (NlsMbCodePageTag == TRUE)
Length = RtlOemStringToUnicodeSize(OemSource) - sizeof(WCHAR); Length = RtlOemStringToUnicodeSize((POEM_STRING)OemSource) - sizeof(WCHAR);
else else
Length = OemSource->Length * sizeof(WCHAR); Length = OemSource->Length * sizeof(WCHAR);
@ -1707,14 +1707,14 @@ NTSTATUS
STDCALL STDCALL
RtlUpcaseUnicodeStringToCountedOemString( RtlUpcaseUnicodeStringToCountedOemString(
IN OUT POEM_STRING OemDest, IN OUT POEM_STRING OemDest,
IN PUNICODE_STRING UniSource, IN PCUNICODE_STRING UniSource,
IN BOOLEAN AllocateDestinationString) IN BOOLEAN AllocateDestinationString)
{ {
NTSTATUS Status; NTSTATUS Status;
ULONG Length; /* excluding nullterm */ ULONG Length; /* excluding nullterm */
if (NlsMbCodePageTag == TRUE) if (NlsMbCodePageTag == TRUE)
Length = RtlUnicodeStringToAnsiSize(UniSource) - sizeof(CHAR); Length = RtlUnicodeStringToAnsiSize((PUNICODE_STRING)UniSource) - sizeof(CHAR);
else else
Length = UniSource->Length / sizeof(WCHAR); Length = UniSource->Length / sizeof(WCHAR);
@ -1768,7 +1768,7 @@ NTSTATUS
STDCALL STDCALL
RtlUpcaseUnicodeStringToOemString ( RtlUpcaseUnicodeStringToOemString (
IN OUT POEM_STRING OemDest, IN OUT POEM_STRING OemDest,
IN PUNICODE_STRING UniSource, IN PCUNICODE_STRING UniSource,
IN BOOLEAN AllocateDestinationString IN BOOLEAN AllocateDestinationString
) )
{ {
@ -1776,7 +1776,7 @@ RtlUpcaseUnicodeStringToOemString (
ULONG Length; /* including nullterm */ ULONG Length; /* including nullterm */
if (NlsMbOemCodePageTag == TRUE) if (NlsMbOemCodePageTag == TRUE)
Length = RtlUnicodeStringToAnsiSize(UniSource); Length = RtlUnicodeStringToAnsiSize((PUNICODE_STRING)UniSource);
else else
Length = (UniSource->Length / sizeof(WCHAR)) + sizeof(CHAR); Length = (UniSource->Length / sizeof(WCHAR)) + sizeof(CHAR);
@ -1913,8 +1913,8 @@ RtlUnicodeStringToAnsiSize(
LONG LONG
STDCALL STDCALL
RtlCompareUnicodeString( RtlCompareUnicodeString(
IN PUNICODE_STRING s1, IN PCUNICODE_STRING s1,
IN PUNICODE_STRING s2, IN PCUNICODE_STRING s2,
IN BOOLEAN CaseInsensitive) IN BOOLEAN CaseInsensitive)
{ {
unsigned int len; unsigned int len;
@ -1976,7 +1976,7 @@ VOID
STDCALL STDCALL
RtlCopyUnicodeString( RtlCopyUnicodeString(
IN OUT PUNICODE_STRING DestinationString, IN OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString) IN PCUNICODE_STRING SourceString)
{ {
ULONG copylen; ULONG copylen;
@ -2058,7 +2058,7 @@ RtlCreateUnicodeStringFromAsciiz(
NTSTATUS STDCALL NTSTATUS STDCALL
RtlDowncaseUnicodeString( RtlDowncaseUnicodeString(
IN OUT PUNICODE_STRING UniDest, IN OUT PUNICODE_STRING UniDest,
IN PUNICODE_STRING UniSource, IN PCUNICODE_STRING UniSource,
IN BOOLEAN AllocateDestinationString) IN BOOLEAN AllocateDestinationString)
{ {
ULONG i; ULONG i;
@ -2303,17 +2303,20 @@ RtlxUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString)
* NOTES * NOTES
* See RtlpDuplicateUnicodeString * See RtlpDuplicateUnicodeString
*/ */
NTSTATUS STDCALL NTSTATUS
STDCALL
RtlDuplicateUnicodeString( RtlDuplicateUnicodeString(
INT AddNull, IN ULONG Flags,
IN PUNICODE_STRING SourceString, IN PCUNICODE_STRING SourceString,
PUNICODE_STRING DestinationString) OUT PUNICODE_STRING DestinationString)
{ {
if (SourceString == NULL || DestinationString == NULL) if (SourceString == NULL || DestinationString == NULL)
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
if (SourceString->Length == 0 && AddNull != 3) if ((SourceString->Length == 0) &&
(Flags != (RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE |
RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING)))
{ {
DestinationString->Length = 0; DestinationString->Length = 0;
DestinationString->MaximumLength = 0; DestinationString->MaximumLength = 0;
@ -2323,7 +2326,7 @@ RtlDuplicateUnicodeString(
{ {
UINT DestMaxLength = SourceString->Length; UINT DestMaxLength = SourceString->Length;
if (AddNull) if (Flags & RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE)
DestMaxLength += sizeof(UNICODE_NULL); DestMaxLength += sizeof(UNICODE_NULL);
DestinationString->Buffer = RtlpAllocateStringMemory(DestMaxLength, TAG_USTR); DestinationString->Buffer = RtlpAllocateStringMemory(DestMaxLength, TAG_USTR);
@ -2334,7 +2337,7 @@ RtlDuplicateUnicodeString(
DestinationString->Length = SourceString->Length; DestinationString->Length = SourceString->Length;
DestinationString->MaximumLength = DestMaxLength; DestinationString->MaximumLength = DestMaxLength;
if (AddNull) if (Flags & RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE)
DestinationString->Buffer[DestinationString->Length / sizeof(WCHAR)] = 0; DestinationString->Buffer[DestinationString->Length / sizeof(WCHAR)] = 0;
} }

View file

@ -329,6 +329,9 @@ extern LARGE_INTEGER IoOtherTransferCount;
#define PIN_NO_READ (4) #define PIN_NO_READ (4)
#define PIN_IF_BCB (8) #define PIN_IF_BCB (8)
#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
/* also in winnt.h */ /* also in winnt.h */
#define SEC_BASED 0x00200000 #define SEC_BASED 0x00200000
#define SEC_NO_CHANGE 0x00400000 #define SEC_NO_CHANGE 0x00400000
@ -3585,7 +3588,7 @@ NTSTATUS
NTAPI NTAPI
RtlAbsoluteToSelfRelativeSD ( RtlAbsoluteToSelfRelativeSD (
IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor, IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
IN OUT PISECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor, IN OUT PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
IN PULONG BufferLength IN PULONG BufferLength
); );
@ -3788,7 +3791,7 @@ NTSYSAPI
ULONG ULONG
NTAPI NTAPI
RtlLengthRequiredSid ( RtlLengthRequiredSid (
IN UCHAR SubAuthorityCount IN ULONG SubAuthorityCount
); );
NTSYSAPI NTSYSAPI

View file

@ -5105,7 +5105,7 @@ NTSTATUS
DDKAPI DDKAPI
RtlAppendUnicodeStringToString( RtlAppendUnicodeStringToString(
IN OUT PUNICODE_STRING Destination, IN OUT PUNICODE_STRING Destination,
IN PUNICODE_STRING Source); IN PCUNICODE_STRING Source);
NTOSAPI NTOSAPI
NTSTATUS NTSTATUS
@ -5193,8 +5193,8 @@ NTOSAPI
LONG LONG
DDKAPI DDKAPI
RtlCompareUnicodeString( RtlCompareUnicodeString(
IN PUNICODE_STRING String1, IN PCUNICODE_STRING String1,
IN PUNICODE_STRING String2, IN PCUNICODE_STRING String2,
IN BOOLEAN CaseInSensitive); IN BOOLEAN CaseInSensitive);
NTOSAPI NTOSAPI
@ -5257,7 +5257,7 @@ VOID
DDKAPI DDKAPI
RtlCopyUnicodeString( RtlCopyUnicodeString(
IN OUT PUNICODE_STRING DestinationString, IN OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString); IN PCUNICODE_STRING SourceString);
NTOSAPI NTOSAPI
NTSTATUS NTSTATUS
@ -5562,8 +5562,8 @@ NTOSAPI
BOOLEAN BOOLEAN
DDKAPI DDKAPI
RtlPrefixUnicodeString( RtlPrefixUnicodeString(
IN PUNICODE_STRING String1, IN PCUNICODE_STRING String1,
IN PUNICODE_STRING String2, IN PCUNICODE_STRING String2,
IN BOOLEAN CaseInSensitive); IN BOOLEAN CaseInSensitive);
NTOSAPI NTOSAPI
@ -5716,14 +5716,14 @@ NTSTATUS
DDKAPI DDKAPI
RtlUnicodeStringToAnsiString( RtlUnicodeStringToAnsiString(
IN OUT PANSI_STRING DestinationString, IN OUT PANSI_STRING DestinationString,
IN PUNICODE_STRING SourceString, IN PCUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString); IN BOOLEAN AllocateDestinationString);
NTOSAPI NTOSAPI
NTSTATUS NTSTATUS
DDKAPI DDKAPI
RtlUnicodeStringToInteger( RtlUnicodeStringToInteger(
IN PUNICODE_STRING String, IN PCUNICODE_STRING String,
IN ULONG Base OPTIONAL, IN ULONG Base OPTIONAL,
OUT PULONG Value); OUT PULONG Value);
@ -5764,7 +5764,7 @@ NTOSAPI
BOOLEAN BOOLEAN
DDKAPI DDKAPI
RtlValidRelativeSecurityDescriptor( RtlValidRelativeSecurityDescriptor(
IN PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput, IN PSECURITY_DESCRIPTOR SecurityDescriptorInput,
IN ULONG SecurityDescriptorLength, IN ULONG SecurityDescriptorLength,
IN SECURITY_INFORMATION RequiredInformation); IN SECURITY_INFORMATION RequiredInformation);

View file

@ -51,6 +51,9 @@ typedef STRING ANSI_STRING;
typedef PSTRING PANSI_STRING; typedef PSTRING PANSI_STRING;
typedef STRING OEM_STRING; typedef STRING OEM_STRING;
typedef PSTRING POEM_STRING; typedef PSTRING POEM_STRING;
typedef CONST STRING* PCOEM_STRING;
typedef STRING CANSI_STRING;
typedef PSTRING PCANSI_STRING;
typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
typedef enum _SECTION_INHERIT { typedef enum _SECTION_INHERIT {
ViewShare = 1, ViewShare = 1,