NT4/private/windows/media/sndblst/registry.h
2020-09-30 17:12:29 +02:00

144 lines
3.3 KiB
C

/****************************************************************************
*
* registry.h
*
* Copyright (c) 1992 Microsoft Corporation. All Rights Reserved.
*
* This file contains public definitions for maintaining registry information
* for drivers managing kernel driver registry related data.
****************************************************************************/
/****************************************************************************
Our registry access data
****************************************************************************/
typedef struct {
SC_HANDLE ServiceManagerHandle; // Handle to the service controller
// SC_HANDLE ServiceHandle; // Handle to our particular service
// HKEY NodeHandle; // Handle to device's key
LPTSTR DriverName; // Name of driver
} REG_ACCESS, *PREG_ACCESS;
/****************************************************************************
Test if configuration etc can be supported
****************************************************************************/
#define DrvAccess(RegAccess) ((RegAccess)->ServiceManagerHandle != NULL)
/****************************************************************************
Driver types
****************************************************************************/
typedef enum {
SoundDriverTypeNormal = 1,
SoundDriverTypeSynth /* Go in the synth group */
} SOUND_KERNEL_MODE_DRIVER_TYPE;
/****************************************************************************
Function prototypes
****************************************************************************/
/*
* Create a services node for our driver if there isn't one already,
* otherwise open the existing one. Returns ERROR_SUCCESS if OK.
*/
BOOL
DrvCreateServicesNode(PTCHAR DriverName,
SOUND_KERNEL_MODE_DRIVER_TYPE DriverType,
PREG_ACCESS RegAccess,
BOOL Create);
/*
* Close down our connection to the services manager
*/
VOID
DrvCloseServiceManager(
PREG_ACCESS RegAccess);
/*
* Delete the services node for our driver
*/
BOOL
DrvDeleteServicesNode(
PREG_ACCESS RegAccess);
/*
* Create the 'Parameters' subkey
*/
LONG
DrvCreateParamsKey(
PREG_ACCESS RegAccess);
/*
* Set a device parameter
*/
LONG
DrvSetDeviceParameter(
PREG_ACCESS RegAccess,
PTCHAR ValueName,
DWORD Value);
/*
* Read current parameter setting
*/
LONG
DrvQueryDeviceParameter(
PREG_ACCESS RegAccess,
PTCHAR ValueName,
PDWORD pValue);
/*
* Try loading a kernel driver
*/
BOOL
DrvLoadKernelDriver(
PREG_ACCESS RegAccess);
/*
* Try unloading a kernel driver
*/
BOOL
DrvUnloadKernelDriver(
PREG_ACCESS RegAccess);
/*
* See if driver is loaded
*/
BOOL
DrvIsDriverLoaded(
PREG_ACCESS RegAccess);
/*
* Do driver (installation+) configuration
*/
BOOL DrvConfigureDriver(
PREG_ACCESS RegAccess,
LPTSTR DriverName,
SOUND_KERNEL_MODE_DRIVER_TYPE
DriverType,
BOOL (* SetParms )(PVOID),
PVOID Context);
/*
* Remove a driver
*/
LRESULT DrvRemoveDriver(
PREG_ACCESS RegAccess);