Leaked source code of windows server 2003
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.5 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1999.
  5. //
  6. // File: E D C . H
  7. //
  8. // Contents: Routines to enumerate (via a callback) the set of "default"
  9. // components that are installed under various conditions.
  10. //
  11. // Notes: We have default components and mandatory components.
  12. // Default components (which also include the mandatory
  13. // components) are installed during attended fresh installs.
  14. // Mandatory components are potentially installed during
  15. // upgrades to make sure that the basic (mandatory) networking
  16. // components are present.
  17. //
  18. // Default components may also depend on on the suite or platform
  19. // currently running. For example, WLBS is a default component
  20. // on the Enterprise suite, but not on normal Professional or
  21. // Server products. Representing this flexibility is the main
  22. // reason a callback interface was chosen, instead of returning
  23. // static arrays of components.
  24. //
  25. // Callers often need to know how many components will be
  26. // enumerated before they actually enumerate them. To satisfy
  27. // this, the callback is first called with the count of items
  28. // to follow. The callback routine therefore is passed a
  29. // message (EDC_INDICATE_COUNT or EDC_INDICATE_ENTRY) to indicate
  30. // the purpose of the call.
  31. //
  32. // Author: shaunco 18 May 1999
  33. //
  34. //----------------------------------------------------------------------------
  35. #pragma once
  36. // EDC_ENTRY.dwEntryType values
  37. //
  38. #define EDC_DEFAULT 0x00000001
  39. #define EDC_MANDATORY 0x00000002
  40. struct EDC_ENTRY
  41. {
  42. PCWSTR pszInfId;
  43. const GUID* pguidDevClass;
  44. DWORD dwEntryType;
  45. USHORT wSuiteMask;
  46. USHORT wProductType;
  47. BOOL fInvertInstallCheck;
  48. };
  49. enum EDC_CALLBACK_MESSAGE
  50. {
  51. EDC_INDICATE_COUNT, // ulData is a UINT
  52. EDC_INDICATE_ENTRY, // ulData is a const EDC_ENTRY*
  53. };
  54. typedef VOID
  55. (CALLBACK* PFN_EDC_CALLBACK) (
  56. IN EDC_CALLBACK_MESSAGE Message,
  57. IN ULONG_PTR MessageData,
  58. IN PVOID pvCallerData OPTIONAL);
  59. VOID
  60. EnumDefaultComponents (
  61. IN DWORD dwEntryType,
  62. IN PFN_EDC_CALLBACK pfnCallback,
  63. IN PVOID pvCallerData OPTIONAL);