#ifndef _LOADER_H_ #define _LOADER_H_ // NOTE: Currently REQUIRED_DLLS contains only new DLLs that are required at // startup of migwiz. It does not contain DLLs that are required already // to start this loader. It does not currently contain DLLs that are // automatically dynamically linked when a function is called in them. // kernel32.dll // msvcrt.dll // user32.dll // comctl32.dll #define REQUIRED_DLLSA { \ "advapi32.dll", \ "comdlg32.dll", \ "gdi32.dll", \ "msvcrt.dll", \ "ole32.dll", \ "setupapi.dll", \ "shell32.dll", \ "shlwapi.dll", \ } #define REQUIRED_DLLSW { \ L"advapi32.dll", \ L"comdlg32.dll", \ L"gdi32.dll", \ L"msvcrt.dll", \ L"ole32.dll", \ L"setupapi.dll", \ L"shell32.dll", \ L"shlwapi.dll", \ } // Constants #define WM_USER_THREAD_COMPLETE (WM_APP + 1) #define WM_USER_HIDE_WINDOW (WM_APP + 2) #define WM_USER_THREAD_ERROR (WM_APP + 3) #define WM_USER_DIALOG_COMPLETE (WM_APP + 4) #define WM_USER_UNPACKING_FILE (WM_APP + 5) #define WM_USER_SUBTHREAD_CREATED (WM_APP + 6) typedef enum _ERRORCODE { E_OK, E_INVALID_PATH, E_INVALID_FILENAME, E_FILE_DOES_NOT_EXIST, E_PROCESS_CREATION_FAILED, E_THREAD_CREATION_FAILED, E_CAB_NOT_FOUND, E_CAB_CORRUPT, E_UNPACK_FAILED, E_DLL_NOT_FOUND, E_OLD_OS_VERSION, E_WRONG_LANGUAGE } ERRORCODE; #define ERROR_MAPPING { \ { E_OK, IDS_MSG_SUCCESS }, \ { E_INVALID_PATH, IDS_MSG_E_INVALID_PATH }, \ { E_INVALID_FILENAME, IDS_MSG_E_INVALID_FILENAME }, \ { E_FILE_DOES_NOT_EXIST, IDS_MSG_E_FILE_DOES_NOT_EXIST }, \ { E_PROCESS_CREATION_FAILED, IDS_MSG_E_PROCESS_CREATION_FAILED }, \ { E_THREAD_CREATION_FAILED, IDS_MSG_E_THREAD_CREATION_FAILED }, \ { E_CAB_NOT_FOUND, IDS_MSG_E_CAB_NOT_FOUND }, \ { E_CAB_CORRUPT, IDS_MSG_E_CAB_CORRUPT }, \ { E_UNPACK_FAILED, IDS_MSG_E_UNPACK_FAILED }, \ { E_DLL_NOT_FOUND, IDS_MSG_E_DLL_NOT_FOUND }, \ { E_OLD_OS_VERSION, IDS_MSG_E_OLD_OS_VERSION }, \ { E_WRONG_LANGUAGE, IDS_MSG_E_WRONG_LANGUAGE }, \ } typedef struct _ERRORMAPPINGSTRUCT { UINT ecValue; UINT uResourceID; } ERRORMAPPINGSTRUCT, *LPERRORMAPPINGSTRUCT; typedef struct _THREADSTARTUPINFO { HWND hWnd; HINSTANCE hInstance; LPSTR lpCmdLine; } THREADSTARTUPINFO, *LPTHREADSTARTUPINFO; // Function prototypes #define ALLOC(size) HeapAlloc( GetProcessHeap (), 0, size ) #define FREE(p) HeapFree( GetProcessHeap (), 0, p ) BOOL InitLanguageDetection(VOID); // Globals extern OSVERSIONINFO g_VersionInfo; extern BOOL g_IsLanguageMatched; #endif /* _LOADER_H_ */