2 * PROJECT: ReactOS win32k.sys
3 * FILE: subsystems/win32/win32k/misc/rtlstr.c
4 * PURPOSE: Large Strings
10 /* INCLUDES ******************************************************************/
14 /* FUNCTIONS *****************************************************************/
17 RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING DestinationString
,
25 DestSize
= strlen(SourceString
);
26 DestinationString
->Length
= DestSize
;
27 DestinationString
->MaximumLength
= DestSize
+ sizeof(CHAR
);
31 DestinationString
->Length
= 0;
32 DestinationString
->MaximumLength
= 0;
35 DestinationString
->Buffer
= (PCHAR
)SourceString
;
36 DestinationString
->bAnsi
= TRUE
;
41 RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING DestinationString
,
42 IN PCWSTR SourceString
,
49 DestSize
= wcslen(SourceString
) * sizeof(WCHAR
);
50 DestinationString
->Length
= DestSize
;
51 DestinationString
->MaximumLength
= DestSize
+ sizeof(WCHAR
);
55 DestinationString
->Length
= 0;
56 DestinationString
->MaximumLength
= 0;
59 DestinationString
->Buffer
= (PWSTR
)SourceString
;
60 DestinationString
->bAnsi
= FALSE
;
65 RtlLargeStringToUnicodeString( PUNICODE_STRING DestinationString
,
66 PLARGE_STRING SourceString
)
68 ANSI_STRING AnsiString
;
70 RtlInitUnicodeString(DestinationString
, NULL
);
71 if (DestinationString
&& SourceString
&& SourceString
->bAnsi
)
73 RtlInitAnsiString(&AnsiString
, (LPSTR
)SourceString
->Buffer
);
74 return NT_SUCCESS(RtlAnsiStringToUnicodeString(DestinationString
, &AnsiString
, TRUE
));
76 else if (DestinationString
&& SourceString
)
78 return RtlCreateUnicodeString(DestinationString
, SourceString
->Buffer
);