|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows NT5.0
// Copyright (C) Microsoft Corporation, 1997, 1998.
//
// File: O E M U P G . C P P
//
// Contents: Sample code for OEM network component upgrade DLL
//
// Notes:
//
//----------------------------------------------------------------------------
#include "pch.h"
#pragma hdrstop
// oemupgex.h is a part of the DDK
#include "oemupgex.h"
HMODULE g_hNetupgrdDll; NetUpgradeAddSectionPrototype g_pfnNuAddSection; NetUpgradeAddLineToSectionPrototype g_pfnNuAddLineToSection;
VENDORINFO g_viOem = { L"Foo Inc.", L"(123) 456 7890", L"http://www.foo.com", L"Please visit our website for further information" };
EXTERN_C LONG __stdcall PreUpgradeInitialize(IN PCWSTR szWorkingDir, IN NetUpgradeInfo* pNetUpgradeInfo, OUT VENDORINFO* pviVendorInfo, OUT DWORD* pdwFlags, OUT NetUpgradeData* pNetUpgradeData) { DWORD dwError=ERROR_SUCCESS;
// get function address of the two exported functions
// for writing into the answerfile
//
g_hNetupgrdDll = GetModuleHandle(L"netupgrd.dll");
if (g_hNetupgrdDll) { g_pfnNuAddSection = (NetUpgradeAddSectionPrototype) GetProcAddress(g_hNetupgrdDll, c_szNetUpgradeAddSection);
g_pfnNuAddLineToSection = (NetUpgradeAddLineToSectionPrototype) GetProcAddress(g_hNetupgrdDll, c_szNetUpgradeAddLineToSection);
if (!g_pfnNuAddSection || !g_pfnNuAddLineToSection) { // this should never occur
//
dwError = ERROR_CALL_NOT_IMPLEMENTED; } }
return dwError; }
EXTERN_C LONG __stdcall DoPreUpgradeProcessing(IN HWND hParentWindow, IN HKEY hkeyParams, IN PCWSTR szPreNT5InfId, IN PCWSTR szPreNT5Instance, IN PCWSTR szNT5InfId, IN PCWSTR szSectionName, OUT VENDORINFO* pviVendorInfo, OUT DWORD* pdwFlags, IN LPVOID pvReserved) { DWORD dwError=ERROR_SUCCESS; WCHAR szTempSection[256]; WCHAR szTempLine[256];
// set the flag so that we will get loaded during GUI setup
*pdwFlags |= NUA_LOAD_POST_UPGRADE;
if (g_pfnNuAddSection && g_pfnNuAddLineToSection) { // add the top level section
//
g_pfnNuAddSection(szSectionName);
// add the mandatory key InfToRunBeforeInstall
//
// note: here it is assumed that the OEM also supplies a file foocopy.inf
// and that it has a section named foo.CopyFiles
//
swprintf(szTempLine, L"%s=foocopy.inf,foo.CopyFiles", c_szInfToRunBeforeInstall); g_pfnNuAddLineToSection(szSectionName, szTempLine);
// add the optional key InfToRunAfterInstall
//
swprintf(szTempLine, L"%s=,%s.SectionToRun", c_szInfToRunAfterInstall, szSectionName); g_pfnNuAddLineToSection(szSectionName, szTempLine);
// now add the section that should be run
//
swprintf(szTempSection, L"%s.SectionToRun", szSectionName); g_pfnNuAddSection(szTempSection);
// add the AddReg key
//
swprintf(szTempLine, L"AddReg=%s.AddReg", szTempSection); g_pfnNuAddLineToSection(szTempSection, szTempLine);
// now add the AddReg section
//
swprintf(szTempSection, L"%s.SectionToRun.AddReg", szSectionName); g_pfnNuAddSection(szTempSection);
// finally add registry operations to this section
//
swprintf(szTempLine, L"HKR,0\\0,IsdnPhoneNumber,0,\"%s\"", L"111-2222"); g_pfnNuAddLineToSection(szTempSection, szTempLine);
swprintf(szTempLine, L"HKR,0\\0,IsdnPhoneNumber,0,\"%s\"", L"333-4444"); g_pfnNuAddLineToSection(szTempSection, szTempLine); }
return dwError; }
EXTERN_C LONG __stdcall PostUpgradeInitialize(IN PCWSTR szWorkingDir, IN NetUpgradeInfo* pNetUpgradeInfo, OUT VENDORINFO* pviVendorInfo, OUT LPVOID pvReserved) { return ERROR_SUCCESS; }
EXTERN_C LONG __stdcall DoPostUpgradeProcessing(IN HWND hParentWindow, IN HKEY hkeyParams, IN PCWSTR szPreNT5Instance, IN PCWSTR szNT5InfId, IN HINF hinfAnswerFile, IN PCWSTR szSectionName, OUT VENDORINFO* pviVendorInfo, IN LPVOID pvReserved) { return ERROR_SUCCESS; }
|