71 lines
2.4 KiB
C
71 lines
2.4 KiB
C
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1999.
|
|
//
|
|
// File: E D C . H
|
|
//
|
|
// Contents: Routines to enumerate (via a callback) the set of "default"
|
|
// components that are installed under various conditions.
|
|
//
|
|
// Notes: We have default components and mandatory components.
|
|
// Default components (which also include the mandatory
|
|
// components) are installed during attended fresh installs.
|
|
// Mandatory components are potentially installed during
|
|
// upgrades to make sure that the basic (mandatory) networking
|
|
// components are present.
|
|
//
|
|
// Default components may also depend on on the suite or platform
|
|
// currently running. For example, WLBS is a default component
|
|
// on the Enterprise suite, but not on normal Professional or
|
|
// Server products. Representing this flexibility is the main
|
|
// reason a callback interface was chosen, instead of returning
|
|
// static arrays of components.
|
|
//
|
|
// Callers often need to know how many components will be
|
|
// enumerated before they actually enumerate them. To satisfy
|
|
// this, the callback is first called with the count of items
|
|
// to follow. The callback routine therefore is passed a
|
|
// message (EDC_INDICATE_COUNT or EDC_INDICATE_ENTRY) to indicate
|
|
// the purpose of the call.
|
|
//
|
|
// Author: shaunco 18 May 1999
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
// EDC_ENTRY.dwEntryType values
|
|
//
|
|
#define EDC_DEFAULT 0x00000001
|
|
#define EDC_MANDATORY 0x00000002
|
|
|
|
struct EDC_ENTRY
|
|
{
|
|
PCWSTR pszInfId;
|
|
const GUID* pguidDevClass;
|
|
DWORD dwEntryType;
|
|
USHORT wSuiteMask;
|
|
USHORT wProductType;
|
|
BOOL fInvertInstallCheck;
|
|
};
|
|
|
|
enum EDC_CALLBACK_MESSAGE
|
|
{
|
|
EDC_INDICATE_COUNT, // ulData is a UINT
|
|
EDC_INDICATE_ENTRY, // ulData is a const EDC_ENTRY*
|
|
};
|
|
|
|
typedef VOID
|
|
(CALLBACK* PFN_EDC_CALLBACK) (
|
|
IN EDC_CALLBACK_MESSAGE Message,
|
|
IN ULONG_PTR MessageData,
|
|
IN PVOID pvCallerData OPTIONAL);
|
|
|
|
VOID
|
|
EnumDefaultComponents (
|
|
IN DWORD dwEntryType,
|
|
IN PFN_EDC_CALLBACK pfnCallback,
|
|
IN PVOID pvCallerData OPTIONAL);
|
|
|