|
|
#ifndef __ECM_UNICODE_H__
#define __ECM_UNICODE_H__
// necessary defns -- remove?
#include <rpc.h>
#include <rpcdce.h>
#include <wincrypt.h>
#include <shfusion.h>
#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
|