Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

163 lines
2.6 KiB

/*
* Copyright (c) 1996 Microsoft Corporation
*
* Module Name:
*
* oc.h
*
* Abstract:
*
* This file defines oc manager generic component
*
* Author:
*
* Kazuhiko Matsubara (kazum) June-16-1999
*
* Environment:
*
* User Mode
*/
#ifdef _OC_H_
#error "oc.h already included!"
#else
#define _OC_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 ]-----------------------------------*/
// 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;
TCHAR* SourcePath;
OCMANAGER_ROUTINES HelperRoutines;
EXTRA_ROUTINES ExtraRoutines;
HSPFILEQ queue;
} PER_COMPONENT_DATA, *PPER_COMPONENT_DATA;
/*-[ functions ]-------------------------------------------*/
//
// oc.cpp
//
DWORD
OnInitComponent(
LPCTSTR ComponentId,
PSETUP_INIT_COMPONENT psc
);
DWORD
OnQuerySelStateChange(
LPCTSTR ComponentId,
LPCTSTR SubcomponentId,
UINT state,
UINT flags
);
DWORD
OnCalcDiskSpace(
LPCTSTR ComponentId,
LPCTSTR SubcomponentId,
DWORD addComponent,
HDSKSPC dspace
);
DWORD
OnCompleteInstallation(
LPCTSTR ComponentId,
LPCTSTR SubcomponentId
);
DWORD
OnQueryState(
LPCTSTR ComponentId,
LPCTSTR SubcomponentId,
UINT state
);
DWORD
OnExtraRoutines(
LPCTSTR ComponentId,
PEXTRA_ROUTINES per
);
PPER_COMPONENT_DATA
AddNewComponent(
LPCTSTR ComponentId
);
PPER_COMPONENT_DATA
LocateComponent(
LPCTSTR ComponentId
);
BOOL
StateInfo(
PPER_COMPONENT_DATA cd,
LPCTSTR SubcomponentId,
BOOL *state
);
// just for utility
#ifdef UNICODE
#define tsscanf swscanf
#define tvsprintf vswprintf
#else
#define tsscanf sscanf
#define tvsprintf vsprintf
#endif
/*-[ global data ]-----------------------------------------*/
#ifndef _OC_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