Eric Pouech <pouech-eric(a)wanadoo.fr> writes:
+/****************************************************************** + * NtAddAtom (NTDLL.@) + */ +NTSTATUS WINAPI NtAddAtom( const WCHAR* name, ULONG length, ATOM* atom ) +{ + WCHAR full_name[MAX_ATOM_LEN + 1]; + + if (length / sizeof(WCHAR) > MAX_ATOM_LEN) return STATUS_INVALID_PARAMETER; + memcpy(full_name, name, length); + full_name[length / sizeof(WCHAR)] = 0; + return RtlAddAtomToAtomTable( get_global_table(), full_name, atom );
That will work, but it's really ugly to copy the string just so we can do a strlenW on it and convert it back to a counted string for the server call. I think you really want the Nt* functions to make direct server calls, and the Rtl* to manipulate a local table. If we don't do things the way NT does we can just as well keep the current implementation. -- Alexandre Julliard julliard(a)winehq.org