/*++ Copyright (c) 2000 Microsoft Corporation All rights reserved. Module Name: Migmain.c Abstract: Routines to migrate Win95 to NT Author: Keisuke Tsuchida (KeisukeT) 10-Oct-2000 Revision History: --*/ #include "precomp.h" #pragma hdrstop #include #include "msg.h" // // Global // HINSTANCE g_hInst = (HINSTANCE)NULL; BOOL DllEntryPoint( IN HINSTANCE hInst, IN DWORD dwReason, IN LPVOID lpRes ) /*++ Routine Description: Dll entry point. Arguments: Return Value: --*/ { UNREFERENCED_PARAMETER(lpRes); switch( dwReason ){ case DLL_PROCESS_ATTACH: g_hInst = hInst; SetupOpenLog(FALSE); break; case DLL_PROCESS_DETACH: g_hInst = (HINSTANCE)NULL; SetupCloseLog(); break; default: return FALSE; } return TRUE; } LONG QueryVersion( OUT LPCSTR *pszProductID, OUT LPUINT plDllVersion, OUT LPINT *pCodePageArray OPTIONAL, OUT LPCSTR *ExeNamesBuf OPTIONAL, OUT PVENDORINFO *pVendorInfo ) { BOOL bFail = TRUE; LPSTR pszLocalProductID; VENDORINFO VendorInfo; DWORD dwRet, dwNeeded, dwReturned, dwLangId; if ( !(pszLocalProductID = GetStringFromRcFileA(IDS_PRODUCTID)) ) goto Done; ZeroMemory(&VendorInfo, sizeof(VendorInfo)); dwLangId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY, (LPVOID)g_hInst, MSG_VI_COMPANY_NAME, dwLangId, VendorInfo.CompanyName, sizeof(VendorInfo.CompanyName), 0); FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY, (LPVOID)g_hInst, MSG_VI_SUPPORT_NUMBER, dwLangId, VendorInfo.SupportNumber, sizeof(VendorInfo.SupportNumber), 0); FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY, (LPVOID)g_hInst, MSG_VI_SUPPORT_URL, dwLangId, VendorInfo.SupportUrl, sizeof(VendorInfo.SupportUrl), 0); FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY, (LPVOID)g_hInst, MSG_VI_INSTRUCTIONS, dwLangId, VendorInfo.InstructionsToUser, sizeof(VendorInfo.InstructionsToUser), 0); *pszProductID = pszLocalProductID; *plDllVersion = 1; *pCodePageArray = NULL; *ExeNamesBuf = NULL; *pVendorInfo = &VendorInfo; /******** // // Call this DLL only if there are some printers or printer drivers // installed // if ( EnumPrinterDriversA(NULL, NULL, 3, NULL, 0, &dwNeeded, &dwReturned) && EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &dwNeeded, &dwReturned) ) { return ERROR_NOT_INSTALLED; } ********/ bFail = FALSE; Done: if ( bFail ) { if ( dwRet = GetLastError() ) return dwRet; return STG_E_UNKNOWN; } return ERROR_SUCCESS; } P_QUERY_VERSION pQueryVersion = QueryVersion;