| 1 | //----------------------------------------------------------------------//
|
|---|
| 2 | // //
|
|---|
| 3 | // //
|
|---|
| 4 | // //
|
|---|
| 5 | // //
|
|---|
| 6 | // //
|
|---|
| 7 | // //
|
|---|
| 8 | // //
|
|---|
| 9 | //----------------------------------------------------------------------//
|
|---|
| 10 |
|
|---|
| 11 | #define INCL_NOPMAPI
|
|---|
| 12 | #define INCL_DOSMODULEMGR
|
|---|
| 13 | #define INCL_DOSSEMAPHORES
|
|---|
| 14 | #include <os2.h>
|
|---|
| 15 |
|
|---|
| 16 | #define INCL_32
|
|---|
| 17 | #include <mcios2.h>
|
|---|
| 18 | #include <mcdos2.h>
|
|---|
| 19 |
|
|---|
| 20 | #include "vsdcmds.h"
|
|---|
| 21 | //#include "shdd.h"
|
|---|
| 22 |
|
|---|
| 23 | #include <stdio.h>
|
|---|
| 24 |
|
|---|
| 25 |
|
|---|
| 26 | //----------------------------------------------------------------------//
|
|---|
| 27 | // //
|
|---|
| 28 | //----------------------------------------------------------------------//
|
|---|
| 29 |
|
|---|
| 30 | typedef LHANDLE HSTREAM;
|
|---|
| 31 |
|
|---|
| 32 | /* DDCMD Defines */
|
|---|
| 33 | #define DDCMD_SETUP 0L
|
|---|
| 34 | #define DDCMD_READ 1L
|
|---|
| 35 | #define DDCMD_WRITE 2L
|
|---|
| 36 | #define DDCMD_STATUS 3L
|
|---|
| 37 | #define DDCMD_CONTROL 4L
|
|---|
| 38 | #define DDCMD_REG_STREAM 5L
|
|---|
| 39 | #define DDCMD_DEREG_STREAM 6L
|
|---|
| 40 |
|
|---|
| 41 | typedef struct _ddcmd_common_parm {
|
|---|
| 42 | ULONG ulFunction;
|
|---|
| 43 | HSTREAM hStream;
|
|---|
| 44 | } DDCMDCOMMON;
|
|---|
| 45 | typedef DDCMDCOMMON *PDDCMDCOMMON;
|
|---|
| 46 |
|
|---|
| 47 |
|
|---|
| 48 | //----------------------------------------------------------------------//
|
|---|
| 49 | // //
|
|---|
| 50 | //----------------------------------------------------------------------//
|
|---|
| 51 |
|
|---|
| 52 | typedef ULONG (APIENTRY *PFNVSDENTRY)(HVSD hvsd, ULONG ulFunc,
|
|---|
| 53 | ULONG ulFlags, PVOID pRequest);
|
|---|
| 54 |
|
|---|
| 55 | typedef ULONG (APIENTRY *PFNDRIVERENTRY)(PMCI_AMP_INSTANCE pInstance,
|
|---|
| 56 | ULONG sMessage, ULONG lParam1,
|
|---|
| 57 | ULONG lParam2, ULONG lParam3);
|
|---|
| 58 |
|
|---|
| 59 |
|
|---|
| 60 | static HMODULE hAUDIOIF;
|
|---|
| 61 | static PFNVSDENTRY pfnVSDEntry;
|
|---|
| 62 | static PFNDRIVERENTRY pfnAUDIOIFDriverEntry;
|
|---|
| 63 |
|
|---|
| 64 | static FILE *fpLog;
|
|---|
| 65 |
|
|---|
| 66 |
|
|---|
| 67 | //----------------------------------------------------------------------//
|
|---|
| 68 | // //
|
|---|
| 69 | //----------------------------------------------------------------------//
|
|---|
| 70 |
|
|---|
| 71 | ULONG APIENTRY LibMain(HMODULE hModule, ULONG fTerminate)
|
|---|
| 72 | {
|
|---|
| 73 | if( !fTerminate )
|
|---|
| 74 | {
|
|---|
| 75 | if( DosLoadModule(NULL, 0, "AUDIOIF", &hAUDIOIF) != 0 ||
|
|---|
| 76 | DosQueryProcAddr(hAUDIOIF, 0, "VSDEntry", (PFN *)&pfnVSDEntry) != 0 ||
|
|---|
| 77 | DosQueryProcAddr(hAUDIOIF, 0, "AUDIOIFDriverEntry", (PFN *)&pfnAUDIOIFDriverEntry) != 0 )
|
|---|
| 78 | {
|
|---|
| 79 | return FALSE;
|
|---|
| 80 | }
|
|---|
| 81 |
|
|---|
| 82 | fpLog = fopen("C:\\VSD.LOG", "a");
|
|---|
| 83 | if( fpLog )
|
|---|
| 84 | {
|
|---|
| 85 | setvbuf(fpLog, NULL, _IOLBF, 4096);
|
|---|
| 86 | fprintf(fpLog, "\nVSD loaded.\n");
|
|---|
| 87 | }
|
|---|
| 88 | }
|
|---|
| 89 | else
|
|---|
| 90 | {
|
|---|
| 91 | if( fpLog )
|
|---|
| 92 | {
|
|---|
| 93 | fprintf(fpLog, "VSD unloaded.\n");
|
|---|
| 94 | fclose(fpLog); fpLog = NULL;
|
|---|
| 95 | }
|
|---|
| 96 |
|
|---|
| 97 | // if( hAUDIOIF ) DosFreeModule(hAUDIOIF);
|
|---|
| 98 | }
|
|---|
| 99 |
|
|---|
| 100 | return TRUE;
|
|---|
| 101 | }
|
|---|
| 102 |
|
|---|
| 103 |
|
|---|
| 104 | //----------------------------------------------------------------------//
|
|---|
| 105 | // //
|
|---|
| 106 | //----------------------------------------------------------------------//
|
|---|
| 107 |
|
|---|
| 108 | ULONG APIENTRY VSDEntry(HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest)
|
|---|
| 109 | {
|
|---|
| 110 | PDDCMDCOMMON pDDCmd;
|
|---|
| 111 |
|
|---|
| 112 | if( fpLog )
|
|---|
| 113 | {
|
|---|
| 114 | if( ulFunc == VSD_DDCMD )
|
|---|
| 115 | {
|
|---|
| 116 | pDDCmd = (PDDCMDCOMMON)pRequest;
|
|---|
| 117 | fprintf(fpLog, "VSDEntry: DDCMD, ulFunction: %d\n", pDDCmd->ulFunction);
|
|---|
| 118 | }
|
|---|
| 119 | else
|
|---|
| 120 | {
|
|---|
| 121 | fprintf(fpLog, "VSDEntry: ulFunc: %u, ulFlags: %d\n", ulFunc, ulFlags);
|
|---|
| 122 | }
|
|---|
| 123 | }
|
|---|
| 124 |
|
|---|
| 125 | return (*pfnVSDEntry)(hvsd, ulFunc, ulFlags, pRequest);
|
|---|
| 126 | }
|
|---|
| 127 |
|
|---|
| 128 |
|
|---|
| 129 | //----------------------------------------------------------------------//
|
|---|
| 130 | // //
|
|---|
| 131 | //----------------------------------------------------------------------//
|
|---|
| 132 |
|
|---|
| 133 | ULONG APIENTRY AUDIOIFDriverEntry(PMCI_AMP_INSTANCE pInstance, ULONG sMessage,
|
|---|
| 134 | ULONG lParam1, ULONG lParam2, ULONG lParam3)
|
|---|
| 135 | {
|
|---|
| 136 | if( fpLog ) fprintf(fpLog, "AUDIOIFDriverEntry: sMessage: %u\n", sMessage);
|
|---|
| 137 |
|
|---|
| 138 | return (*pfnAUDIOIFDriverEntry)(pInstance, sMessage, lParam1, lParam2, lParam3);
|
|---|
| 139 | }
|
|---|
| 140 |
|
|---|
| 141 |
|
|---|
| 142 |
|
|---|