/*++ Copyright (c) 1995 Microsoft Corporation All rights reserved. Module Name: local.h Abstract: Utility functions for Win95 upgrade of printing Author: Muhunthan Sivapragasam (MuhuntS) 15-Jan-1997 Revision History: --*/ // // Type definitions // typedef struct _UPGRADE_DATA { HINSTANCE hInst; LPSTR pszDir; LPSTR pszProductId; LPSTR pszSourceA; LPWSTR pszSourceW; } UPGRADE_DATA, *PUPGRADE_DATA; typedef struct _OEM_UPGRADE_INFO { LPSTR pszModuleName; HMODULE hModule; } OEM_UPGRADE_INFO, *POEM_UPGRADE_INFO; typedef struct _UPGRADABLE_LIST { LPSTR pszName; } UPGRADABLE_LIST, *PUPGRADABLE_LIST; typedef struct _SELECTED_DRV_INFO { LPTSTR pszInfName; LPTSTR pszModelName; LPTSTR pszDriverSection; PSP_DEVINFO_DATA pDevInfoData; LPTSTR pszHardwareID; LPTSTR pszManufacturer; LPTSTR pszOEMUrl; LPTSTR pszProvider; FILETIME ftDriverDate; DWORDLONG dwlDriverVersion; DWORD Flags; LPTSTR pszzPreviousNames; } SELECTED_DRV_INFO, *PSELECTED_DRV_INFO; typedef struct _PARSEINF_INFO { PLATFORM platform; LPTSTR pszInstallSection; // Can be platform dependent LPTSTR pszzICMFiles; LPTSTR pszPrintProc; LPTSTR pszVendorSetup; DWORD cbDriverInfo6; DRIVER_INFO_6 DriverInfo6; } PARSEINF_INFO, *PPARSEINF_INFO; typedef struct _PNP_INFO { LPTSTR pszPortName; LPTSTR pszDeviceInstanceId; } PNP_INFO, *PPNP_INFO; typedef struct _PSETUP_LOCAL_DATA { SELECTED_DRV_INFO DrvInfo; DWORD signature; DWORD Flags; PARSEINF_INFO InfInfo; PNP_INFO PnPInfo; } PSETUP_LOCAL_DATA; typedef BOOL (WINAPI* AllOCANDINITSID)( PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID ); typedef BOOL (WINAPI* CHECKTOKENMEMBERSHIP)( HANDLE, PSID, PBOOL ); typedef PVOID (WINAPI* FREESID)( PSID ); extern CHAR szNetprnFile[]; extern const GUID GUID_DEVCLASS_PRINTER; extern UPGRADE_DATA UpgradeData; extern OEM_UPGRADE_INFO OEMUpgradeInfo[]; extern LPSTR pszNetPrnEntry; extern BOOL bDoNetPrnUpgrade; extern DWORD dwRunOnceCount; #define MAX_STRING_LEN MAX_PATH #define IDS_PRODUCTID 1001 #define IDS_TITLE 1002 #define IDS_DRIVERS_UPGRADE_FAILED 2001 #define IDS_DRIVER_UPGRADE_FAILED 2002 #define IDS_ADDDRIVER_FAILED 2003 #define IDS_ICM_FAILED 2004 #define IDS_DEFAULT_PRINTER_FAILED 2005 #define IDS_ADDPRINTER_FAILED 2006 #define IDS_ADDMONITOR_FAILED 2007 #define IDS_PRINTER_CANT_MIGRATE 3001 #define SIZECHARS(x) (sizeof((x))/sizeof(*x)) #if DBG #define ASSERT(expr) if ( !(expr) ) DebugBreak(); #else #define ASSERT(expr) ; #endif // // Debug functions // VOID DebugMsg( LPCSTR pszFormat, ... ); // // Heap management // PVOID AllocMem( IN UINT cbSize ); VOID FreeMem( IN PVOID pMem ); LPSTR AllocStrA( IN LPCSTR pszStr ); LPWSTR AllocStrW( IN LPCWSTR pszStr ); LPWSTR AllocStrWFromStrA( LPCSTR pszStr ); LPSTR AllocStrAFromStrW( LPCWSTR pszStr ); VOID FreePrinterInfo2Strings( PPRINTER_INFO_2A pPrinterInfo2 ); // // Functions to write print config to the text file // VOID WriteToFile( HANDLE hFile, LPBOOL pbFail, LPCSTR pszFormat, ... ); VOID WriteString( IN HANDLE hFile, IN OUT LPBOOL pbFail, IN LPCSTR pszStr ); VOID WritePrinterInfo2( IN HANDLE hFile, IN LPPRINTER_INFO_2A pPrinterInfo2, IN LPSTR pszDriver, IN OUT LPBOOL pbFail ); // // Functions to parse the text file having printing config info // LPSTR GetLine( IN HANDLE hFile, IN OUT LPBOOL pbFail ); VOID ReadString( IN HANDLE hFile, IN LPSTR pszPrefix, OUT LPSTR *pszStr, IN BOOL bOptional, IN OUT LPBOOL pbFail ); VOID ReadDword( IN HANDLE hFile, IN LPSTR pszLine, IN DWORD dwLineSize, IN LPSTR pszPrefix, OUT LPDWORD pdwValue, IN OUT LPBOOL pbFail ); VOID ReadPrinterInfo2( IN HANDLE hFile, IN LPPRINTER_INFO_2A pPrinterInfo2, IN OUT LPBOOL pbFail ); // // Misc stuff // VOID CopyFilesToWorkingDir( IN OUT LPBOOL pbFail ); VOID CleanupDriverMapping( IN OUT HDEVINFO *phDevInfo, IN OUT HINF *phNtInf, IN OUT HINF *phUpgInf ); VOID InitDriverMapping( OUT HDEVINFO *phDevInfo, OUT HINF *phNtInf, OUT HINF *phUpgInf, IN OUT LPBOOL pbFail ); BOOL InitFileCopyOnNT( IN HDEVINFO hDevInfo ); BOOL CommitFileQueueToCopyFiles( IN HDEVINFO hDevInfo ); LPSTR ErrorMsg( VOID ); VOID LogError( IN LogSeverity Severity, IN UINT MessageId, ... ); LPSTR GetStringFromRcFileA( IN UINT uId ); VOID SetupNetworkPrinterUpgrade( IN LPCSTR pszWorkingDir ); BOOL ProcessNetPrnUpgradeForUser( HKEY hKeyUser ); DWORD MySetDefaultPrinter( IN HKEY hUserRegKey, IN LPSTR pszDefaultPrinterString ); VOID WriteRunOnceCount( ); LPSTR GetDefPrnString( IN LPCSTR pszPrinterName ); CHAR My_fgetc( HANDLE hFile ); LPSTR My_fgets( LPSTR pszBuf, DWORD dwSize, HANDLE hFile ); DWORD My_fread( LPBYTE pBuf, DWORD dwSize, HANDLE hFile ); BOOL My_ungetc( HANDLE hFile ); DWORD GetFileNameInSpoolDir( IN LPSTR szBuf, IN DWORD cchBuf, IN LPSTR pszFileName ); LPSTR GetVendorSetupRunOnceValueToSet( VOID ); LONG WriteVendorSetupInfoInRegistry( IN CHAR *pszVendorSetup, IN CHAR *pszPrinterName ); LONG RemoveVendorSetupInfoFromRegistry( VOID ); VOID CallVendorSetupDlls( VOID ); BOOL IsLocalAdmin( BOOL *pbAdmin ); LONG DecrementVendorSetupEnumerator( VOID ); BOOL MakeACopyOfMigrateDll( IN LPCSTR pszWorkingDir ); HMODULE LoadLibraryUsingFullPathW( LPCTSTR lpFileName ); HMODULE LoadLibraryUsingFullPathA( LPCTSTR lpFileName );