|
|
/****************************************************************************
* * registry.h * * Copyright (c) 1992-1994 Microsoft Corporation * * 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
LPTSTR DriverName; // Name of driver
TCHAR TempKeySaveFileName[MAX_PATH]; // Where parameters key is saved
} 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 new key */ HKEY DrvCreateDeviceKey(LPCTSTR DriverName);
/*
* Open a subkey under our driver's node */ HKEY DrvOpenRegKey(LPCTSTR DriverName, LPCTSTR Path); /*
* 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);
/*
* Save the parameters subkey */ BOOL DrvSaveParametersKey(PREG_ACCESS RegAccess);
/*
* Restore the parameters subkey */ BOOL DrvRestoreParametersKey(PREG_ACCESS RegAccess);
/*
* Create the 'Parameters' subkey */ LONG DrvCreateParamsKey( PREG_ACCESS RegAccess);
/*
* Open the key to a numbered device (starts at 0) */ HKEY DrvOpenDeviceKey(LPCTSTR DriverName, UINT n);
/*
* Set a device parameter */ #define DrvSetDeviceParameter(a, b, c) \
DrvSetDeviceIdParameter(a, 0, b, c) LONG DrvSetDeviceIdParameter( PREG_ACCESS RegAccess, UINT DeviceNumber, PTCHAR ValueName, DWORD Value);
/*
* Read current parameter setting */
#define DrvQueryDeviceParameter(a, b, c) \
DrvQueryDeviceIdParameter(a, 0, b, c) LONG DrvQueryDeviceIdParameter( PREG_ACCESS RegAccess, UINT DeviceNumber, 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);
/*
* Number of card instances installed for a given driver */
LONG DrvNumberOfDevices( PREG_ACCESS RegAccess, LPDWORD NumberOfDevices);
/*
* Set the midi mapper setup to use */ VOID DrvSetMapperName(LPTSTR SetupName);
/*
* Find which interrupts and DMA Channels are free */
BOOL GetInterruptsAndDMA( LPDWORD InterruptsInUse, LPDWORD DmaChannelsInUse, LPCTSTR IgnoreDriver );
|