Author: fireball Date: Thu May 29 11:00:20 2008 New Revision: 33758
URL: http://svn.reactos.org/svn/reactos?rev=33758&view=rev Log: Stefan Ginsberg stefan__100__@hotmail.com - Remove usage of unexported RtlDuplicateUnicodeString in green.sys driver (this is basically the same fix which Herve applied to blue.sys).
Modified: trunk/rosapps/drivers/green/green.c trunk/rosapps/drivers/green/green.h trunk/rosapps/drivers/green/pnp.c
Modified: trunk/rosapps/drivers/green/green.c URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/drivers/green/green.c?rev=3... ============================================================================== --- trunk/rosapps/drivers/green/green.c [iso-8859-1] (original) +++ trunk/rosapps/drivers/green/green.c [iso-8859-1] Thu May 29 11:00:20 2008 @@ -41,13 +41,13 @@ } RtlZeroMemory(DriverExtension, sizeof(GREEN_DRIVER_EXTENSION));
- Status = RtlDuplicateUnicodeString( + Status = GreenDuplicateUnicodeString( 0, RegistryPath, &DriverExtension->RegistryPath); if (!NT_SUCCESS(Status)) { - DPRINT("RtlDuplicateUnicodeString() failed with status 0x%08lx\n", Status); + DPRINT("GreenDuplicateUnicodeString() failed with status 0x%08lx\n", Status); return Status; }
@@ -66,3 +66,48 @@
return STATUS_SUCCESS; } + +NTSTATUS +GreenDuplicateUnicodeString( + IN ULONG Flags, + IN PCUNICODE_STRING SourceString, + OUT PUNICODE_STRING DestinationString) +{ + if (SourceString == NULL || DestinationString == NULL + || SourceString->Length > SourceString->MaximumLength + || (SourceString->Length == 0 && SourceString->MaximumLength > 0 && SourceString->Buffer == NULL) + || Flags == RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING || Flags >= 4) + { + return STATUS_INVALID_PARAMETER; + } + + + if ((SourceString->Length == 0) + && (Flags != (RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE | + RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING))) + { + DestinationString->Length = 0; + DestinationString->MaximumLength = 0; + DestinationString->Buffer = NULL; + } + else + { + USHORT DestMaxLength = SourceString->Length; + + if (Flags & RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE) + DestMaxLength += sizeof(UNICODE_NULL); + + DestinationString->Buffer = ExAllocatePool(PagedPool, DestMaxLength); + if (DestinationString->Buffer == NULL) + return STATUS_NO_MEMORY; + + RtlCopyMemory(DestinationString->Buffer, SourceString->Buffer, SourceString->Length); + DestinationString->Length = SourceString->Length; + DestinationString->MaximumLength = DestMaxLength; + + if (Flags & RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE) + DestinationString->Buffer[DestinationString->Length / sizeof(WCHAR)] = 0; + } + + return STATUS_SUCCESS; +}
Modified: trunk/rosapps/drivers/green/green.h URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/drivers/green/green.h?rev=3... ============================================================================== --- trunk/rosapps/drivers/green/green.h [iso-8859-1] (original) +++ trunk/rosapps/drivers/green/green.h [iso-8859-1] Thu May 29 11:00:20 2008 @@ -9,15 +9,8 @@ #include <wincon.h> #include <drivers/blue/ntddblue.h>
-NTSYSAPI -NTSTATUS -NTAPI -RtlDuplicateUnicodeString( - IN ULONG Flags, - IN PCUNICODE_STRING SourceString, - OUT PUNICODE_STRING DestinationString -); #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1 +#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
#define INFINITE -1 #define KEYBOARD_BUFFER_SIZE 100 @@ -190,3 +183,11 @@ ScreenDeviceControl( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); + +/************************************ green.c */ + +NTSTATUS +GreenDuplicateUnicodeString( + IN ULONG Flags, + IN PCUNICODE_STRING SourceString, + OUT PUNICODE_STRING DestinationString);
Modified: trunk/rosapps/drivers/green/pnp.c URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/drivers/green/pnp.c?rev=337... ============================================================================== --- trunk/rosapps/drivers/green/pnp.c [iso-8859-1] (original) +++ trunk/rosapps/drivers/green/pnp.c [iso-8859-1] Thu May 29 11:00:20 2008 @@ -343,7 +343,7 @@ { UNICODE_STRING SourceU, String; RtlInitUnicodeString(&SourceU, Source); - Status = RtlDuplicateUnicodeString( + Status = GreenDuplicateUnicodeString( RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE, &SourceU, &String); @@ -377,7 +377,7 @@ if (SourceU.Length) { UNICODE_STRING String; - Status = RtlDuplicateUnicodeString( + Status = GreenDuplicateUnicodeString( RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE, &SourceU, &String); @@ -560,3 +560,4 @@ return Status; }
+