[PATCH 1/2] ntdll: Add RtlLCIDToCultureName.
Alexandre Julliard
julliard at winehq.org
Thu Apr 8 12:04:46 CDT 2021
Mark Harmstone <mark at harmstone.com> writes:
> +static NTSTATUS load_string_us( ULONG id, LANGID lang, PUNICODE_STRING us )
> +{
> + const IMAGE_RESOURCE_DATA_ENTRY *data;
> + LDR_RESOURCE_INFO info;
> + NTSTATUS status;
> + WCHAR *p;
> + int i;
> +
> + info.Type = 6; /* RT_STRING */
> + info.Name = (id >> 4) + 1;
> + info.Language = lang;
> + if ((status = LdrFindResource_U( kernel32_handle, &info, 3, &data ))) return status;
> + p = (WCHAR *)((char *)kernel32_handle + data->OffsetToData);
> + for (i = 0; i < (id & 0x0f); i++) p += *p + 1;
> + if (*p >= us->MaximumLength / sizeof(WCHAR)) return STATUS_BUFFER_TOO_SMALL;
> + us->Length = *p * sizeof(WCHAR);
> + memcpy( us->Buffer, p + 1, us->Length );
> + return STATUS_SUCCESS;
> +}
You could probably reuse the existing helper. This would need some tests
about the behavior on short buffers.
> + /* kernel32 doesn't store information about primary languages */
LOCALE_SPARENT seems pretty close.
--
Alexandre Julliard
julliard at winehq.org
More information about the wine-devel
mailing list