Windows NT 4.0 source code leak
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.

143 lines
3.3 KiB

4 years ago
  1. /****************************************************************************
  2. *
  3. * registry.h
  4. *
  5. * Copyright (c) 1992 Microsoft Corporation. All Rights Reserved.
  6. *
  7. * This file contains public definitions for maintaining registry information
  8. * for drivers managing kernel driver registry related data.
  9. ****************************************************************************/
  10. /****************************************************************************
  11. Our registry access data
  12. ****************************************************************************/
  13. typedef struct {
  14. SC_HANDLE ServiceManagerHandle; // Handle to the service controller
  15. // SC_HANDLE ServiceHandle; // Handle to our particular service
  16. // HKEY NodeHandle; // Handle to device's key
  17. LPTSTR DriverName; // Name of driver
  18. } REG_ACCESS, *PREG_ACCESS;
  19. /****************************************************************************
  20. Test if configuration etc can be supported
  21. ****************************************************************************/
  22. #define DrvAccess(RegAccess) ((RegAccess)->ServiceManagerHandle != NULL)
  23. /****************************************************************************
  24. Driver types
  25. ****************************************************************************/
  26. typedef enum {
  27. SoundDriverTypeNormal = 1,
  28. SoundDriverTypeSynth /* Go in the synth group */
  29. } SOUND_KERNEL_MODE_DRIVER_TYPE;
  30. /****************************************************************************
  31. Function prototypes
  32. ****************************************************************************/
  33. /*
  34. * Create a services node for our driver if there isn't one already,
  35. * otherwise open the existing one. Returns ERROR_SUCCESS if OK.
  36. */
  37. BOOL
  38. DrvCreateServicesNode(PTCHAR DriverName,
  39. SOUND_KERNEL_MODE_DRIVER_TYPE DriverType,
  40. PREG_ACCESS RegAccess,
  41. BOOL Create);
  42. /*
  43. * Close down our connection to the services manager
  44. */
  45. VOID
  46. DrvCloseServiceManager(
  47. PREG_ACCESS RegAccess);
  48. /*
  49. * Delete the services node for our driver
  50. */
  51. BOOL
  52. DrvDeleteServicesNode(
  53. PREG_ACCESS RegAccess);
  54. /*
  55. * Create the 'Parameters' subkey
  56. */
  57. LONG
  58. DrvCreateParamsKey(
  59. PREG_ACCESS RegAccess);
  60. /*
  61. * Set a device parameter
  62. */
  63. LONG
  64. DrvSetDeviceParameter(
  65. PREG_ACCESS RegAccess,
  66. PTCHAR ValueName,
  67. DWORD Value);
  68. /*
  69. * Read current parameter setting
  70. */
  71. LONG
  72. DrvQueryDeviceParameter(
  73. PREG_ACCESS RegAccess,
  74. PTCHAR ValueName,
  75. PDWORD pValue);
  76. /*
  77. * Try loading a kernel driver
  78. */
  79. BOOL
  80. DrvLoadKernelDriver(
  81. PREG_ACCESS RegAccess);
  82. /*
  83. * Try unloading a kernel driver
  84. */
  85. BOOL
  86. DrvUnloadKernelDriver(
  87. PREG_ACCESS RegAccess);
  88. /*
  89. * See if driver is loaded
  90. */
  91. BOOL
  92. DrvIsDriverLoaded(
  93. PREG_ACCESS RegAccess);
  94. /*
  95. * Do driver (installation+) configuration
  96. */
  97. BOOL DrvConfigureDriver(
  98. PREG_ACCESS RegAccess,
  99. LPTSTR DriverName,
  100. SOUND_KERNEL_MODE_DRIVER_TYPE
  101. DriverType,
  102. BOOL (* SetParms )(PVOID),
  103. PVOID Context);
  104. /*
  105. * Remove a driver
  106. */
  107. LRESULT DrvRemoveDriver(
  108. PREG_ACCESS RegAccess);