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.
 
 
 
 
 
 

175 lines
3.6 KiB

/****************************************************************************
*
* config.c
*
* Copyright (c) 1991 Microsoft Corporation. All Rights Reserved.
*
***************************************************************************/
#include <windows.h>
#include <mmsystem.h>
#include <soundcfg.h>
#include "driver.h"
#include "registry.h"
#include <stdarg.h>
#include "config.h"
#define BUILD_NUMBER L"1.00"
#if DBG
WCHAR STR_CRLF[] = L"\r\n";
WCHAR STR_SPACE[] = L" ";
WORD wDebugLevel = 0;
#endif
/*
* Globals
*/
HMODULE ghModule;
REG_ACCESS RegAccess;
//
// Configuration data
//
WCHAR gszHelpFile[] = STR_HELPFILE;
/** void FAR cdecl AlertBox(HWND hwnd, UINT wStrId, ...)
*
* DESCRIPTION:
*
*
* ARGUMENTS:
* (HWND hwnd, UINT wStrId, ...)
*
* RETURN (void FAR cdecl):
*
*
* NOTES:
*
** cjp */
void AlertBox(HWND hwnd, UINT wStrId, ...)
{
WCHAR szAlert[50];
WCHAR szFormat[128];
WCHAR ach[512];
va_list va;
LoadString(ghModule, SR_ALERT, szAlert, sizeof(szAlert));
LoadString(ghModule, wStrId, szFormat, sizeof(szFormat));
va_start(va, wStrId);
wvsprintf(ach, szFormat, va);
va_end(va);
MessageBox(hwnd, ach, szAlert, MB_ICONINFORMATION | MB_OK);
} /* AlertBox() */
/*
* load the kernel driver and tell the user we are loaded
*/
int DrvInstall(void)
{
if (DrvCreateServicesNode(STR_DRIVERNAME, SoundDriverTypeSynth, &RegAccess,
TRUE)) {
if (DrvIsDriverLoaded(&RegAccess) ||
DrvLoadKernelDriver(&RegAccess)) {
DrvCreateParamsKey(&RegAccess);
return(DRV_RESTART);
} else {
/*
* If the kernel driver fails to load we don't want to
* leave the services node entry lying around.
*/
DrvDeleteServicesNode(&RegAccess);
}
}
DrvCloseServiceManager(&RegAccess);
return(DRV_CANCEL);
}
/*************************************************************************
DlgAboutProc - dialog box for the "About" option.
standard windows
*/
int DlgAboutProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message){
case WM_INITDIALOG:
SetDlgItemText(hDlg, IDD_TXT_VERSION, BUILD_NUMBER);
return TRUE;
case WM_COMMAND:
switch (wParam){
case IDOK:
EndDialog(hDlg,0);
return TRUE;
}
break;
}
return FALSE;
}
/***************************************************************************/
LRESULT ConfigRemove(HWND hDlg)
{
BOOL Deleted;
//
// Access the services node
//
if (DrvCreateServicesNode(STR_DRIVERNAME, SoundDriverTypeSynth, &RegAccess,
FALSE)) {
//
// Try to unload the driver
//
DrvUnloadKernelDriver(&RegAccess);
//
// Remove the driver entry from the registry
//
// Note - the user should normally restart because (for instance)
// the dll will remain loaded on all processes linked to winmm until
// restart so no new version will be installable.
//
Deleted = DrvDeleteServicesNode(&RegAccess);
} else {
Deleted = TRUE;
}
//
// Make sure we've freed all our registry handles
//
DrvCloseServiceManager(&RegAccess);
if (!Deleted) {
//
// Tell the user there's a problem
//
AlertBox(hDlg, SR_ALERT_FAILREMOVE);
return DRVCNF_CANCEL;
} else {
return DRVCNF_RESTART;
}
}