windows-nt/Source/XPSP1/NT/base/ntsetup/ocmanage/generic/ocgen.h
2020-09-26 16:20:57 +08:00

165 lines
3.1 KiB
C

/*
* Copyright (c) 1996 Microsoft Corporation
*
* Module Name:
*
* ocgen.h
*
* Abstract:
*
* This file defines oc manager generic component
*
* Author:
*
* Pat Styles (patst) Jan-20-1998
*
* Environment:
*
* User Mode
*/
#ifdef _OCGEN_H_
#error "ocgen.h already included!"
#else
#define _OCGEN_H_
#endif
#ifndef _WINDOWS_H_
#include <windows.h>
#endif
#ifndef _TCHAR_H_
#include <tchar.h>
#endif
#ifndef _SETUPAPI_H_
#include <setupapi.h>
#endif
#ifndef _OCMANAGE_H_
#include "ocmanage.h"
#endif
#ifndef _PRSHT_H_
#include <prsht.h>
#endif
#ifndef _RESOURCE_H_
#include "resource.h"
#endif
/*-[ types and defines ]-----------------------------------*/
// unicode version is for NT only.
#ifdef UNICODE
#define NT
#endif
#ifdef ANSI
#define WIN95
#endif
// just my preference
#define true TRUE
#define false FALSE
// to help root out hard coded strings that don't belong
#define FMT TEXT
#define NullString(a) *(a) = TCHAR('\0')
// standard buffer sizes
#define S_SIZE 1024
#define SBUF_SIZE (S_SIZE * sizeof(TCHAR))
// per component data
typedef struct _PER_COMPONENT_DATA {
struct _PER_COMPONENT_DATA *Next;
LPCTSTR ComponentId;
HINF hinf;
DWORDLONG Flags;
LANGID LanguageId;
TCHAR *SourcePath;
OCMANAGER_ROUTINES HelperRoutines;
EXTRA_ROUTINES ExtraRoutines;
HSPFILEQ queue;
LONG UnattendedOverride;
} PER_COMPONENT_DATA, *PPER_COMPONENT_DATA;
/*-[ functions ]-------------------------------------------*/
// just for utility
#ifdef UNICODE
#define tsscanf swscanf
#define tvsprintf vswprintf
#else
#define tsscanf sscanf
#define tvsprintf vsprintf
#endif
// from util.cpp
DWORD MsgBox(HWND hwnd, UINT textID, UINT type, ... );
DWORD MsgBox(HWND hwnd, LPCTSTR fmt, LPCTSTR caption, UINT type, ... );
DWORD MBox(LPCTSTR fmt, LPCTSTR caption, ... );
DWORD TMBox(LPCTSTR fmt, ... );
#define mbox MBox
#define tmbox TMBox
void logOCNotification(DWORD msg, const TCHAR *component);
void logOCNotificationCompletion();
void loginit();
void log(TCHAR *fmt, ...);
void AssureTrailingBackslash(TCHAR *path);
BOOL IsNT();
#if defined(__cplusplus)
extern "C" {
#endif
// from ocgen.cpp
BOOL ToBeInstalled(TCHAR *component);
BOOL WasInstalled(TCHAR *component);
DWORD SetupCurrentUser();
DWORD GetMyVersion(DWORD *major, DWORD *minor);
VOID ReplaceExplorerStartMenuBitmap(VOID);
DWORD OcLog(LPCTSTR ComponentId, UINT level, LPCTSTR sz);
DWORD SysGetDebugLevel();
// from util.cpp
void DebugTraceNL(DWORD level, const TCHAR *text);
void DebugTrace(DWORD level, const TCHAR *text);
void DebugTraceOCNotification(DWORD msg, const TCHAR *component);
void DebugTraceFileCopy(const TCHAR *file);
void DebugTraceFileCopyError();
void DebugTraceDirCopy(const TCHAR *dir);
#if defined(__cplusplus)
}
#endif
/*-[ global data ]-----------------------------------------*/
#ifndef _OCGEN_CPP_
#define EXTERN extern
#else
#define EXTERN
#endif
// general stuff
EXTERN HINSTANCE ghinst; // app instance handle
EXTERN HWND ghwnd; // wizard window handle
// per-component info storage
EXTERN PPER_COMPONENT_DATA gcd; // array of all components we are installing