source: cmedia/trunk/Vsd/cmivsd.c@ 354

Last change on this file since 354 was 354, checked in by stevenhl, 17 years ago

Import untested baseline cmedia sources, work products and binaries
Binaries and work products should be deleted from repository.
once new builds are verified to work.

File size: 3.7 KB
Line 
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
30typedef 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
41typedef struct _ddcmd_common_parm {
42 ULONG ulFunction;
43 HSTREAM hStream;
44 } DDCMDCOMMON;
45typedef DDCMDCOMMON *PDDCMDCOMMON;
46
47
48//----------------------------------------------------------------------//
49// //
50//----------------------------------------------------------------------//
51
52typedef ULONG (APIENTRY *PFNVSDENTRY)(HVSD hvsd, ULONG ulFunc,
53 ULONG ulFlags, PVOID pRequest);
54
55typedef ULONG (APIENTRY *PFNDRIVERENTRY)(PMCI_AMP_INSTANCE pInstance,
56 ULONG sMessage, ULONG lParam1,
57 ULONG lParam2, ULONG lParam3);
58
59
60static HMODULE hAUDIOIF;
61static PFNVSDENTRY pfnVSDEntry;
62static PFNDRIVERENTRY pfnAUDIOIFDriverEntry;
63
64static FILE *fpLog;
65
66
67//----------------------------------------------------------------------//
68// //
69//----------------------------------------------------------------------//
70
71ULONG 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
108ULONG 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
133ULONG 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
Note: See TracBrowser for help on using the repository browser.