|
|
/*++
Copyright (c) 1997 Microsoft Corporation All rights reserved.
Module Name:
Migmain.c
Abstract:
Routines to migrate Win95 to NT
Author:
Muhunthan Sivapragasam (MuhuntS) 02-Jan-1996
Revision History:
--*/
#include "precomp.h"
#pragma hdrstop
#include <devguid.h>
#include "msg.h"
VENDORINFO VendorInfo; UPGRADE_DATA UpgradeData; CHAR szNetprnFile[] = "netwkprn.txt";
BOOL DllMain( 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: UpgradeData.hInst = hInst; UpgradeData.pszProductId = NULL; UpgradeData.pszSourceA = NULL; UpgradeData.pszSourceW = NULL; UpgradeData.pszDir = NULL; break;
case DLL_PROCESS_DETACH: FreeMem(UpgradeData.pszProductId); FreeMem(UpgradeData.pszSourceA); FreeMem(UpgradeData.pszSourceW); FreeMem(UpgradeData.pszDir); FreeMem(pszNetPrnEntry); 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; DWORD dwRet, dwNeeded, dwReturned, dwLangId;
if(!pszProductID || !plDllVersion || !pVendorInfo) { SetLastError(ERROR_INVALID_PARAMETER); return ERROR_INVALID_PARAMETER; }
if ( !(UpgradeData.pszProductId = 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)UpgradeData.hInst, MSG_VI_COMPANY_NAME, dwLangId, VendorInfo.CompanyName, sizeof(VendorInfo.CompanyName), 0);
FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY, (LPVOID)UpgradeData.hInst, MSG_VI_SUPPORT_NUMBER, dwLangId, VendorInfo.SupportNumber, sizeof(VendorInfo.SupportNumber), 0);
FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY, (LPVOID)UpgradeData.hInst, MSG_VI_SUPPORT_URL, dwLangId, VendorInfo.SupportUrl, sizeof(VendorInfo.SupportUrl), 0);
FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY, (LPVOID)UpgradeData.hInst, MSG_VI_INSTRUCTIONS, dwLangId, VendorInfo.InstructionsToUser, sizeof(VendorInfo.InstructionsToUser), 0);
//
// Since we are not checking the return value from FormatMessage we null-terminate the strings
// to make sure they are NULL-terminated.
//
VendorInfo.CompanyName[sizeof(VendorInfo.CompanyName)-1] = 0; VendorInfo.SupportNumber[sizeof(VendorInfo.SupportNumber)-1] = 0; VendorInfo.SupportUrl[sizeof(VendorInfo.SupportUrl)-1] = 0; VendorInfo.InstructionsToUser[sizeof(VendorInfo.InstructionsToUser)-1] = 0;
*pszProductID = UpgradeData.pszProductId; *plDllVersion = 1; if(pCodePageArray) { *pCodePageArray = NULL; } if(ExeNamesBuf) { *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;
|