2 * PROJECT: ReactOS user32.dll
3 * FILE: lib/user32/misc/rtlstr.c
4 * PURPOSE: Large Strings
10 /* INCLUDES ******************************************************************/
14 #include <wine/debug.h>
16 WINE_DEFAULT_DEBUG_CHANNEL(user32
);
18 /* FUNCTIONS *****************************************************************/
21 RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING DestinationString
,
29 DestSize
= strlen(SourceString
);
30 DestinationString
->Length
= DestSize
;
31 DestinationString
->MaximumLength
= DestSize
+ sizeof(CHAR
);
35 DestinationString
->Length
= 0;
36 DestinationString
->MaximumLength
= 0;
39 DestinationString
->Buffer
= (PCHAR
)SourceString
;
40 DestinationString
->bAnsi
= TRUE
;
45 RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING DestinationString
,
46 IN PCWSTR SourceString
,
53 DestSize
= wcslen(SourceString
) * sizeof(WCHAR
);
54 DestinationString
->Length
= DestSize
;
55 DestinationString
->MaximumLength
= DestSize
+ sizeof(WCHAR
);
59 DestinationString
->Length
= 0;
60 DestinationString
->MaximumLength
= 0;
63 DestinationString
->Buffer
= (PWSTR
)SourceString
;
64 DestinationString
->bAnsi
= FALSE
;
69 RtlLargeStringToUnicodeString( PUNICODE_STRING DestinationString
,
70 PLARGE_STRING SourceString
)
72 ANSI_STRING AnsiString
;
74 RtlInitUnicodeString(DestinationString
, NULL
);
75 if (DestinationString
&& SourceString
&& SourceString
->bAnsi
)
77 RtlInitAnsiString(&AnsiString
, (LPSTR
)SourceString
->Buffer
);
78 return NT_SUCCESS(RtlAnsiStringToUnicodeString(DestinationString
, &AnsiString
, TRUE
));
80 else if (DestinationString
&& SourceString
)
82 return RtlCreateUnicodeString(DestinationString
, SourceString
->Buffer
);