From 0bbab987c098f420aaf4306da46fdc2905c96e3e Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Tue, 21 Feb 2012 19:19:44 +0000 Subject: [PATCH] [KERNEL32]: Use macro for CreateMailSlotA->CreateMailSlotW. svn path=/trunk/; revision=55791 --- .../dll/win32/kernel32/client/file/mailslot.c | 28 ++----------------- reactos/dll/win32/kernel32/include/base_x.h | 11 ++++++++ 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/reactos/dll/win32/kernel32/client/file/mailslot.c b/reactos/dll/win32/kernel32/client/file/mailslot.c index 8b3d05fde09..730a3e12879 100644 --- a/reactos/dll/win32/kernel32/client/file/mailslot.c +++ b/reactos/dll/win32/kernel32/client/file/mailslot.c @@ -26,32 +26,8 @@ CreateMailslotA(IN LPCSTR lpName, IN DWORD lReadTimeout, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes) { - PUNICODE_STRING NameU; - ANSI_STRING NameA; - NTSTATUS Status; - - NameU = &NtCurrentTeb()->StaticUnicodeString; - - RtlInitAnsiString(&NameA, (LPSTR)lpName); - Status = RtlAnsiStringToUnicodeString(NameU, &NameA, FALSE); - if (!NT_SUCCESS(Status)) - { - if (Status == STATUS_BUFFER_OVERFLOW) - { - SetLastError(ERROR_FILENAME_EXCED_RANGE); - } - else - { - BaseSetLastNTError(Status); - } - - return INVALID_HANDLE_VALUE; - } - - return CreateMailslotW(NameU->Buffer, - nMaxMessageSize, - lReadTimeout, - lpSecurityAttributes); + /* Call the W(ide) function */ + ConvertWin32AnsiObjectApiToUnicodeApi2(Mailslot, lpName, nMaxMessageSize, lReadTimeout, lpSecurityAttributes); } /* diff --git a/reactos/dll/win32/kernel32/include/base_x.h b/reactos/dll/win32/kernel32/include/base_x.h index faca2f97d56..62ed8f5c4c5 100644 --- a/reactos/dll/win32/kernel32/include/base_x.h +++ b/reactos/dll/win32/kernel32/include/base_x.h @@ -58,6 +58,17 @@ if (NT_SUCCESS(Status)) return Create##obj##W(__VA_ARGS__, UnicodeCache->Buffer); \ ConvertAnsiToUnicodeEpilogue +// +// This macro uses the ConvertAnsiToUnicode macros above to convert a CreateXxxA +// Win32 API into its equivalent CreateXxxW API. +// +#define ConvertWin32AnsiObjectApiToUnicodeApi2(obj, name, ...) \ + ConvertAnsiToUnicodePrologue \ + if (!name) return Create##obj##W(NULL, __VA_ARGS__); \ + ConvertAnsiToUnicodeBody(name) \ + if (NT_SUCCESS(Status)) return Create##obj##W(UnicodeCache->Buffer, __VA_ARGS__); \ + ConvertAnsiToUnicodeEpilogue + // // This macro uses the ConvertAnsiToUnicode macros above to convert a FindFirst*A // Win32 API into its equivalent FindFirst*W API.