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.
 
 
 
 
 
 

70 lines
2.4 KiB

//+---------------------------------------------------------------------------
//
// 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);