#ifndef __ECM_UNICODE_H__ #define __ECM_UNICODE_H__ // necessary defns -- remove? #include #include #include #include #ifdef __cplusplus extern "C" { #endif BOOL WINAPI FIsWinNT(void); BOOL WINAPI FIsWinNT5(VOID); BOOL WINAPI MkMBStrEx(PBYTE pbBuff, DWORD cbBuff, LPCWSTR wsz, int cchW, char ** pszMB, int *pcbConverted); BOOL WINAPI MkMBStr(PBYTE pbBuff, DWORD cbBuff, LPCWSTR wsz, char ** pszMB); void WINAPI FreeMBStr(PBYTE pbBuff, char * szMB); LPWSTR WINAPI MkWStr(char * szMB); void WINAPI FreeWStr(LPWSTR wsz); BOOL WINAPI wstr2guid(const WCHAR *pwszIn, GUID *pgOut); BOOL WINAPI guid2wstr(const GUID *pgIn, WCHAR *pwszOut); // The following is also needed for non-x86 due to a bug in advapi32 for // CryptAcquireContextW. BOOL WINAPI CryptAcquireContextU( HCRYPTPROV *phProv, LPCWSTR lpContainer, LPCWSTR lpProvider, DWORD dwProvType, DWORD dwFlags ); BOOL WINAPI CryptEnumProvidersU( DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPWSTR pwszProvName, DWORD *pcbProvName ); // The following is also needed for non-x86 due to the fact that the // A/W versions of the ListView_ functions do not exist. // (these are implemented in ispu\common\unicode\commctrl.cpp) int WINAPI ListView_InsertItemU( HWND hwnd, const LPLVITEMW pitem ); void WINAPI ListView_SetItemTextU( HWND hwnd, int i, int iSubItem, LPCWSTR pszText ); int WINAPI ListView_InsertColumnU( HWND hwnd, int i, const LPLVCOLUMNW plvC); BOOL WINAPI ListView_GetItemU( HWND hwnd, LPLVITEMW pitem ); LONG WINAPI RegOpenHKCUKeyExA( HKEY hKey, // handle of open key LPCSTR lpSubKey, // address of name of subkey to open DWORD ulOptions, // reserved REGSAM samDesired, // security access mask PHKEY phkResult // address of handle of open key ); // // the following api's handle the problem with impersinating another user // and having the HKEY_CURRENT_USER opened to an incorrect user's SID. // LONG WINAPI RegCreateHKCUKeyExU ( HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ); LONG WINAPI RegCreateHKCUKeyExA ( HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ); LONG WINAPI RegOpenHKCUKeyExU( HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult ); LONG WINAPI RegOpenHKCU( HKEY *phKeyCurrentUser ); LONG WINAPI RegOpenHKCUEx( HKEY *phKeyCurrentUser, DWORD dwFlags ); // Normally, HKEY_USERS\CurrentSid is opened as the HKCU. However, if // HKEY_USERS\CurrentSid doesn't exist, then, HKEY_USERS\.Default is // opened. Set the following flag to only open // HKEY_USERS\.Default if the current user is the LocalSystem SID. #define REG_HKCU_LOCAL_SYSTEM_ONLY_DEFAULT_FLAG 0x1 LONG WINAPI RegCloseHKCU( HKEY hKeyCurrentUser ); BOOL WINAPI GetUserTextualSidHKCU( IN LPWSTR wszTextualSid, IN OUT LPDWORD pcchTextualSid ); #ifdef _M_IX86 // Reg.cpp LONG WINAPI RegCreateKeyExU ( HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ); LONG WINAPI RegDeleteKeyU( HKEY hKey, LPCWSTR lpSubKey ); LONG WINAPI RegEnumKeyExU ( HKEY hKey, DWORD dwIndex, LPWSTR lpName, LPDWORD lpcbName, LPDWORD lpReserved, LPWSTR lpClass, LPDWORD lpcbClass, PFILETIME lpftLastWriteTime ); LONG WINAPI RegEnumValueU ( HKEY hKey, DWORD dwIndex, LPWSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); LONG RegQueryValueExU( HKEY hKey, LPCWSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); LONG WINAPI RegSetValueExU ( HKEY hKey, LPCWSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE* lpData, DWORD cbData ); LONG WINAPI RegDeleteValueU ( HKEY hKey, LPCWSTR lpValueName ); LONG WINAPI RegQueryInfoKeyU ( HKEY hKey, LPWSTR lpClass, LPDWORD lpcbClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcbMaxSubKeyLen, LPDWORD lpcbMaxClassLen, LPDWORD lpcValues, LPDWORD lpcbMaxValueNameLen, LPDWORD lpcbMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime ); LONG WINAPI RegOpenKeyExU( HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult ); LONG WINAPI RegConnectRegistryU ( LPWSTR lpMachineName, HKEY hKey, PHKEY phkResult ); // File.cpp HANDLE WINAPI CreateFileU ( LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile ); BOOL WINAPI DeleteFileU( LPCWSTR lpFileName ); BOOL WINAPI CopyFileU( LPCWSTR lpwExistingFileName, LPCWSTR lpwNewFileName, BOOL bFailIfExists ); BOOL WINAPI MoveFileExU( LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, DWORD dwFlags); DWORD WINAPI GetFileAttributesU( LPCWSTR lpFileName ); BOOL WINAPI SetFileAttributesU( LPCWSTR lpFileName, DWORD dwFileAttributes ); DWORD WINAPI GetCurrentDirectoryU( DWORD nBufferLength, LPWSTR lpBuffer); BOOL WINAPI CreateDirectoryU( LPCWSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes ); UINT WINAPI GetWindowsDirectoryU( LPWSTR lpBuffer, UINT uSize ); HINSTANCE WINAPI LoadLibraryU( LPCWSTR lpLibFileName ); HINSTANCE WINAPI LoadLibraryExU( LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags ); DWORD WINAPI ExpandEnvironmentStringsU( LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize ); // capi.cpp BOOL WINAPI CryptSignHashU( HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR lpDescription, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen ); BOOL WINAPI CryptVerifySignatureU( HCRYPTHASH hHash, CONST BYTE *pbSignature, DWORD dwSigLen, HCRYPTKEY hPubKey, LPCWSTR lpDescription, DWORD dwFlags ); BOOL WINAPI CryptSetProviderU( LPCWSTR lpProvName, DWORD dwProvType ); // Ole.cpp RPC_STATUS RPC_ENTRY UuidToStringU( UUID * Uuid, WCHAR * * StringUuid ); // nt.cpp BOOL WINAPI GetUserNameU( LPWSTR lpBuffer, LPDWORD nSize ); BOOL WINAPI GetComputerNameU( LPWSTR lpBuffer, LPDWORD nSize ); DWORD WINAPI GetModuleFileNameU( HMODULE hModule, LPWSTR lpFilename, DWORD nSize ); HMODULE WINAPI GetModuleHandleU( LPCWSTR lpModuleName // address of module name to return handle for ); // user.cpp int WINAPI LoadStringU( HINSTANCE hInstance, UINT uID, LPWSTR lpBuffer, int nBufferMax ); DWORD WINAPI FormatMessageU( DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, va_list *Arguments ); BOOL WINAPI SetWindowTextU( HWND hWnd, LPCWSTR lpString ); int WINAPI DialogBoxParamU( HINSTANCE hInstance, LPCWSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam ); UINT WINAPI GetDlgItemTextU( HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount ); BOOL WINAPI SetDlgItemTextU( HWND hDlg, int nIDDlgItem, LPCWSTR lpString ); int WINAPI MessageBoxU( HWND hWnd , LPCWSTR lpText, LPCWSTR lpCaption, UINT uType ); int WINAPI LCMapStringU( LCID Locale, DWORD dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest ); int WINAPI GetDateFormatU( LCID Locale, DWORD dwFlags, CONST SYSTEMTIME *lpDate, LPCWSTR lpFormat, LPWSTR lpDateStr, int cchDate ); int WINAPI GetTimeFormatU( LCID Locale, DWORD dwFlags, CONST SYSTEMTIME *lpTime, LPCWSTR lpFormat, LPWSTR lpTimeStr, int cchTime ); BOOL WINAPI WinHelpU( HWND hWndMain, LPCWSTR lpszHelp, UINT uCommand, DWORD dwData ); LRESULT WINAPI SendMessageU( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); LONG WINAPI SendDlgItemMessageU( HWND hDlg, int nIDDlgItem, UINT Msg, WPARAM wParam, LPARAM lParam ); LPWSTR WINAPI GetCommandLineU(void); BOOL WINAPI IsBadStringPtrU(IN LPWSTR lpsz, UINT ucchMax); void WINAPI OutputDebugStringU(IN LPWSTR lpwsz); int WINAPI DrawTextU( HDC hDC, LPCWSTR lpString, int nCount, LPRECT lpRect, UINT uFormat ); // event.cpp HANDLE WINAPI CreateEventU( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCWSTR lpName); HANDLE WINAPI RegisterEventSourceU( LPCWSTR lpUNCServerName, LPCWSTR lpSourceName); HANDLE WINAPI OpenEventU( DWORD dwDesiredAccess, BOOL bInheritHandle, LPCWSTR lpName); HANDLE WINAPI CreateMutexU( LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCWSTR lpName); HANDLE WINAPI OpenMutexU( DWORD dwDesiredAccess, BOOL bInheritHandle, LPCWSTR lpName); HFONT WINAPI CreateFontIndirectU(CONST LOGFONTW *lplf); #else #define RegQueryValueExU RegQueryValueExW #define RegCreateKeyExU RegCreateKeyExW #define RegDeleteKeyU RegDeleteKeyW #define RegEnumKeyExU RegEnumKeyExW #define RegEnumValueU RegEnumValueW #define RegSetValueExU RegSetValueExW #define RegQueryInfoKeyU RegQueryInfoKeyW #define RegDeleteValueU RegDeleteValueW #define RegOpenKeyExU RegOpenKeyExW #define RegConnectRegistryU RegConnectRegistryW #define ExpandEnvironmentStringsU ExpandEnvironmentStringsW #define CreateFileU CreateFileW #define DeleteFileU DeleteFileW #define CopyFileU CopyFileW #define GetFileAttributesU GetFileAttributesW #define SetFileAttributesU SetFileAttributesW #define GetCurrentDirectoryU GetCurrentDirectoryW #define CreateDirectoryU CreateDirectoryW #define GetWindowsDirectoryU GetWindowsDirectoryW #define LoadLibraryU LoadLibraryW #define LoadLibraryExU LoadLibraryExW #define CryptSignHashU CryptSignHashW #define CryptVerifySignatureU CryptVerifySignatureW #define CryptSetProviderU CryptSetProviderW #define UuidToStringU UuidToStringW #define GetUserNameU GetUserNameW #define GetComputerNameU GetComputerNameW #define GetModuleFileNameU GetModuleFileNameW #define GetModuleHandleU GetModuleHandleW #define LoadStringU LoadStringW #define FormatMessageU FormatMessageW #define SetWindowTextU SetWindowTextW #define DialogBoxParamU DialogBoxParamW #define GetDlgItemTextU GetDlgItemTextW #define SetDlgItemTextU SetDlgItemTextW #define MessageBoxU MessageBoxW #define LCMapStringU LCMapStringW #define GetDateFormatU GetDateFormatW #define GetTimeFormatU GetTimeFormatW #define WinHelpU WinHelpW #define SendMessageU SendMessageW #define SendDlgItemMessageU SendDlgItemMessageW #define IsBadStringPtrU IsBadStringPtrW #define OutputDebugStringU OutputDebugStringW #define GetCommandLineU GetCommandLineW #define DrawTextU DrawTextW #define CreateEventU CreateEventW #define RegisterEventSourceU RegisterEventSourceW #define OpenEventU OpenEventW #define CreateMutexU CreateMutexW #define OpenMutexU OpenMutexW #define CreateFontIndirectU CreateFontIndirectW #endif // _M_IX86 #ifdef __cplusplus } // Balance extern "C" above #endif #endif