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

1.1       root        1: /****************************************************************************
                      2:  *
                      3:  *   drvproc.c
                      4:  *
                      5:  *   Copyright (c) 1991-1992 Microsoft Corporation.  All Rights Reserved.
                      6:  *
                      7:  ***************************************************************************/
                      8: 
                      9: #include <windows.h>
                     10: #include <mmsystem.h>
                     11: #include "registry.h"
                     12: #include "driver.h"
                     13: 
                     14: extern REG_ACCESS RegAccess;
                     15: 
                     16: /* Temp definition until DefDriverProc gets properly defined */
                     17: 
                     18: 
                     19: LONG APIENTRY DefDriverProc(DWORD  dwDriverIdentifier,
                     20:                              HANDLE hDriver,
                     21:                              UINT   message,  // Bug in ptypes32.h
                     22:                              LONG   lParam1,
                     23:                              LONG   lParam2);
                     24: 
                     25: /***************************************************************************
                     26:  * @doc INTERNAL
                     27:  *
                     28:  * @api LRESULT | DriverProc | The entry point for an installable driver.
                     29:  *
                     30:  * @parm DWORD | dwDriverId | For most messages, <p dwDriverId> is the DWORD
                     31:  *     value that the driver returns in response to a <m DRV_OPEN> message.
                     32:  *     Each time that the driver is opened, through the <f DrvOpen> API,
                     33:  *     the driver receives a <m DRV_OPEN> message and can return an
                     34:  *     arbitrary, non-zero value. The installable driver interface
                     35:  *     saves this value and returns a unique driver handle to the
                     36:  *     application. Whenever the application sends a message to the
                     37:  *     driver using the driver handle, the interface routes the message
                     38:  *     to this entry point and passes the corresponding <p dwDriverId>.
                     39:  *     This mechanism allows the driver to use the same or different
                     40:  *     identifiers for multiple opens but ensures that driver handles
                     41:  *     are unique at the application interface layer.
                     42:  *
                     43:  *     The following messages are not related to a particular open
                     44:  *     instance of the driver. For these messages, the dwDriverId
                     45:  *     will always be zero.
                     46:  *
                     47:  *         DRV_LOAD, DRV_FREE, DRV_ENABLE, DRV_DISABLE, DRV_OPEN
                     48:  *
                     49:  * @parm HDRVR | hDriver | This is the handle returned to the
                     50:  *     application by the driver interface.
                     51:  *
                     52:  * @parm UINT | uiMessage | The requested action to be performed. Message
                     53:  *     values below <m DRV_RESERVED> are used for globally defined messages.
                     54:  *     Message values from <m DRV_RESERVED> to <m DRV_USER> are used for
                     55:  *     defined driver protocols. Messages above <m DRV_USER> are used
                     56:  *     for driver specific messages.
                     57:  *
                     58:  * @parm LPARAM | lParam1 | Data for this message.  Defined separately for
                     59:  *     each message
                     60:  *
                     61:  * @parm LPARAM | lParam2 | Data for this message.  Defined separately for
                     62:  *     each message
                     63:  *
                     64:  * @rdesc Defined separately for each message.
                     65:  ***************************************************************************/
                     66: LRESULT DriverProc(DWORD dwDriverID, HDRVR hDriver, UINT uiMessage, LPARAM lParam1, LPARAM lParam2)
                     67: {
                     68:     switch (uiMessage) {
                     69:         case DRV_LOAD:
                     70:             D1("DRV_LOAD");
                     71: 
                     72:             /*
                     73:                Sent to the driver when it is loaded. Always the first
                     74:                message received by a driver.
                     75: 
                     76:                dwDriverID is 0L.
                     77:                lParam1 is 0L.
                     78:                lParam2 is 0L.
                     79: 
                     80:                Return 0L to fail the load.
                     81: 
                     82:                DefDriverProc will return NON-ZERO so we don't have to
                     83:                handle DRV_LOAD
                     84:             */
                     85: 
                     86:             return (LRESULT)1L;
                     87: 
                     88:         case DRV_FREE:
                     89:             D1("DRV_FREE");
                     90: 
                     91:             /*
                     92:                Sent to the driver when it is about to be discarded. This
                     93:                will always be the last message received by a driver before
                     94:                it is freed.
                     95: 
                     96:                dwDriverID is 0L.
                     97:                lParam1 is 0L.
                     98:                lParam2 is 0L.
                     99: 
                    100:                Return value is ignored.
                    101:             */
                    102: 
                    103:             return (LRESULT)1L;
                    104: 
                    105:         case DRV_OPEN:
                    106:             D1("DRV_OPEN");
                    107: 
                    108:             /*
                    109:                Sent to the driver when it is opened.
                    110: 
                    111:                dwDriverID is 0L.
                    112: 
                    113:                lParam1 is a far pointer to a zero-terminated string
                    114:                containing the name used to open the driver.
                    115: 
                    116:                lParam2 is passed through from the drvOpen call.
                    117: 
                    118:                Return 0L to fail the open.
                    119: 
                    120:                DefDriverProc will return ZERO so we do have to
                    121:                handle the DRV_OPEN message.
                    122:              */
                    123: 
                    124:             return (LRESULT)1L;
                    125: 
                    126:         case DRV_CLOSE:
                    127:             D1("DRV_CLOSE");
                    128: 
                    129:             /*
                    130:                Sent to the driver when it is closed. Drivers are unloaded
                    131:                when the close count reaches zero.
                    132: 
                    133:                dwDriverID is the driver identifier returned from the
                    134:                corresponding DRV_OPEN.
                    135: 
                    136:                lParam1 is passed through from the drvClose call.
                    137: 
                    138:                lParam2 is passed through from the drvClose call.
                    139: 
                    140:                Return 0L to fail the close.
                    141: 
                    142:                DefDriverProc will return ZERO so we do have to
                    143:                handle the DRV_CLOSE message.
                    144:             */
                    145: 
                    146:             return (LRESULT)1L;
                    147: 
                    148:         case DRV_ENABLE:
                    149:             D1("DRV_ENABLE");
                    150: 
                    151:             /*
                    152:                Sent to the driver when the driver is loaded or reloaded
                    153:                and whenever Windows is enabled. Drivers should only
                    154:                hook interrupts or expect ANY part of the driver to be in
                    155:                memory between enable and disable messages
                    156: 
                    157:                dwDriverID is 0L.
                    158:                lParam1 is 0L.
                    159:                lParam2 is 0L.
                    160: 
                    161:                Return value is ignored.
                    162:             */
                    163: 
                    164:             //return (LRESULT)(Enable() ? 1L : 0L);
                    165: 
                    166:             return 1L;
                    167: 
                    168:         case DRV_DISABLE:
                    169:             D1("DRV_DISABLE");
                    170: 
                    171:             /*
                    172:                Sent to the driver before the driver is freed.
                    173:                and whenever Windows is disabled
                    174: 
                    175:                dwDriverID is 0L.
                    176:                lParam1 is 0L.
                    177:                lParam2 is 0L.
                    178: 
                    179:                Return value is ignored.
                    180:             */
                    181: 
                    182:             // Disable();
                    183: 
                    184:             return (LRESULT)1L;
                    185: 
                    186:         case DRV_QUERYCONFIGURE:
                    187:             D1("DRV_QUERYCONFIGURE");
                    188: 
                    189:             /*
                    190:                 Sent to the driver so that applications can
                    191:                 determine whether the driver supports custom
                    192:                 configuration. The driver should return a
                    193:                 non-zero value to indicate that configuration
                    194:                 is supported.
                    195: 
                    196:                 dwDriverID is the value returned from the DRV_OPEN
                    197:                 call that must have succeeded before this message
                    198:                 was sent.
                    199: 
                    200:                 lParam1 is passed from the app and is undefined.
                    201:                 lParam2 is passed from the app and is undefined.
                    202: 
                    203:                 Return 0L to indicate configuration NOT supported.
                    204:             */
                    205: 
                    206:             return (LRESULT)0L;
                    207: 
                    208:         case DRV_CONFIGURE:
                    209:             D1("DRV_CONFIGURE");
                    210: 
                    211:             /*
                    212:                 Sent to the driver so that it can display a custom
                    213:                 configuration dialog box.
                    214: 
                    215:                 lParam1 is passed from the app. and should contain
                    216:                 the parent window handle in the loword.
                    217:                 lParam2 is passed from the app and is undefined.
                    218: 
                    219:                 Return value is undefined.
                    220: 
                    221:                 Drivers should create their own section in system.ini.
                    222:                 The section name should be the driver name.
                    223:             */
                    224: 
                    225:             return (LRESULT)0L;
                    226: 
                    227:         case DRV_INSTALL:
                    228: 
                    229:            /*
                    230:             *  Set a flag so that config knows we're installing something
                    231:             */
                    232: 
                    233:             D1("DRV_INSTALL");
                    234:             return (LRESULT)DrvInstall();
                    235: 
                    236:         case DRV_REMOVE:
                    237: 
                    238:             D1("DRV_REMOVE");
                    239:             return ConfigRemove((HWND)lParam1);
                    240: 
                    241:         default:
                    242:             return DefDriverProc(dwDriverID, hDriver,uiMessage,lParam1,lParam2);
                    243:     }
                    244: }
                    245: 
                    246: 
                    247: /****************************************************************************
                    248:  * @doc INTERNAL
                    249:  *
                    250:  * @api int | DllEntryPoint | Library initialization code.
                    251:  *
                    252:  * @parm HANDLE | hModule | Our module handle.
                    253:  *
                    254:  * @parm DWORD | Reason | The reason we've been called
                    255:  *
                    256:  * @parm LPVOID | lpReserved | Extra data.
                    257:  *
                    258:  * @rdesc Returns 1 if the initialization was successful and 0 otherwise.
                    259:  ***************************************************************************/
                    260: 
                    261:  BOOL DllEntryPoint(HANDLE hModule, DWORD Reason, LPVOID lpReserved)
                    262:  {
                    263:      switch (Reason) {
                    264: 
                    265: 
                    266:      case DLL_PROCESS_ATTACH:
                    267:          //
                    268:          // We're being loaded - save our handle
                    269:          //
                    270: 
                    271:          ghModule = hModule;
                    272:                 return TRUE;
                    273: 
                    274:      default:
                    275:          return TRUE;
                    276:      }
                    277: 
                    278:  }

unix.superglobalmegacorp.com

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