Annotation of ntddk/src/mmedia/synth/dll/config.c, revision 1.1.1.1

1.1       root        1: /****************************************************************************
                      2:  *
                      3:  *   config.c
                      4:  *
                      5:  *   Copyright (c) 1991 Microsoft Corporation.  All Rights Reserved.
                      6:  *
                      7:  ***************************************************************************/
                      8: 
                      9:  #include <windows.h>
                     10:  #include <mmsystem.h>
                     11:  #include <soundcfg.h>
                     12:  #include "driver.h"
                     13:  #include "registry.h"
                     14:  #include <stdarg.h>
                     15:  #include "config.h"
                     16: 
                     17:  #define BUILD_NUMBER L"1.00"
                     18: 
                     19: #if DBG
                     20:  WCHAR STR_CRLF[] = L"\r\n";
                     21:  WCHAR STR_SPACE[] = L" ";
                     22:  WORD wDebugLevel = 0;
                     23: #endif
                     24: 
                     25: /*
                     26:  *  Globals
                     27:  */
                     28: 
                     29:  HMODULE ghModule;
                     30:  REG_ACCESS RegAccess;
                     31: 
                     32:  //
                     33:  // Configuration data
                     34:  //
                     35: 
                     36:  WCHAR gszHelpFile[] = STR_HELPFILE;
                     37: 
                     38: /** void FAR cdecl AlertBox(HWND hwnd, UINT wStrId, ...)
                     39:  *
                     40:  *  DESCRIPTION:
                     41:  *
                     42:  *
                     43:  *  ARGUMENTS:
                     44:  *      (HWND hwnd, UINT wStrId, ...)
                     45:  *
                     46:  *  RETURN (void FAR cdecl):
                     47:  *
                     48:  *
                     49:  *  NOTES:
                     50:  *
                     51:  ** cjp */
                     52: 
                     53: void AlertBox(HWND hwnd, UINT wStrId, ...)
                     54: {
                     55:     WCHAR    szAlert[50];
                     56:     WCHAR    szFormat[128];
                     57:     WCHAR    ach[512];
                     58:     va_list  va;
                     59: 
                     60: 
                     61:     LoadString(ghModule, SR_ALERT, szAlert, sizeof(szAlert));
                     62:     LoadString(ghModule, wStrId, szFormat, sizeof(szFormat));
                     63:     va_start(va, wStrId);
                     64:     wvsprintf(ach, szFormat, va);
                     65:     va_end(va);
                     66: 
                     67:     MessageBox(hwnd, ach, szAlert, MB_ICONINFORMATION | MB_OK);
                     68: } /* AlertBox() */
                     69: 
                     70: /*
                     71:  * load the kernel driver and tell the user we are loaded
                     72:  */
                     73: int DrvInstall(void)
                     74: {
                     75:     if (DrvCreateServicesNode(STR_DRIVERNAME, SoundDriverTypeSynth, &RegAccess,
                     76:                               TRUE)) {
                     77:         if (DrvIsDriverLoaded(&RegAccess) ||
                     78:             DrvLoadKernelDriver(&RegAccess)) {
                     79:             DrvCreateParamsKey(&RegAccess);
                     80:             return(DRV_RESTART);
                     81:         } else {
                     82: 
                     83:            /*
                     84:             *  If the kernel driver fails to load we don't want to
                     85:             *  leave the services node entry lying around.
                     86:             */
                     87: 
                     88:             DrvDeleteServicesNode(&RegAccess);
                     89:         }
                     90:     }
                     91: 
                     92:     DrvCloseServiceManager(&RegAccess);
                     93: 
                     94:     return(DRV_CANCEL);
                     95: 
                     96: 
                     97: }
                     98: 
                     99: /*************************************************************************
                    100: DlgAboutProc - dialog box for the "About" option.
                    101: 
                    102: standard windows
                    103: */
                    104: 
                    105: int DlgAboutProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
                    106: {
                    107: 
                    108:     switch (message){
                    109:         case WM_INITDIALOG:
                    110:                 SetDlgItemText(hDlg, IDD_TXT_VERSION, BUILD_NUMBER);
                    111:                 return TRUE;
                    112:         case WM_COMMAND:
                    113:             switch (wParam){
                    114:                 case IDOK:
                    115:                     EndDialog(hDlg,0);
                    116:                     return TRUE;
                    117:             }
                    118:             break;
                    119:     }
                    120:     return FALSE;
                    121: }
                    122: 
                    123: 
                    124: /***************************************************************************/
                    125: 
                    126: LRESULT ConfigRemove(HWND hDlg)
                    127: {
                    128:     BOOL Deleted;
                    129: 
                    130:     //
                    131:     // Access the services node
                    132:     //
                    133: 
                    134:     if (DrvCreateServicesNode(STR_DRIVERNAME, SoundDriverTypeSynth, &RegAccess,
                    135:                               FALSE)) {
                    136: 
                    137:         //
                    138:         // Try to unload the driver
                    139:         //
                    140: 
                    141:         DrvUnloadKernelDriver(&RegAccess);
                    142: 
                    143:         //
                    144:         // Remove the driver entry from the registry
                    145:         //
                    146:         // Note - the user should normally restart because (for instance)
                    147:         // the dll will remain loaded on all processes linked to winmm until
                    148:         // restart so no new version will be installable.
                    149:         //
                    150: 
                    151:         Deleted = DrvDeleteServicesNode(&RegAccess);
                    152:     } else {
                    153:         Deleted = TRUE;
                    154:     }
                    155: 
                    156:     //
                    157:     // Make sure we've freed all our registry handles
                    158:     //
                    159: 
                    160:     DrvCloseServiceManager(&RegAccess);
                    161: 
                    162:     if (!Deleted) {
                    163: 
                    164:         //
                    165:         // Tell the user there's a problem
                    166:         //
                    167: 
                    168:         AlertBox(hDlg, SR_ALERT_FAILREMOVE);
                    169: 
                    170:         return DRVCNF_CANCEL;
                    171:     } else {
                    172:         return DRVCNF_RESTART;
                    173:     }
                    174: }
                    175: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.