source: cmedia/trunk/Vsd/AudioIF/vsdlog.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: 24.3 KB
Line 
1
2#define INCL_NOPMAPI
3#define INCL_DOS
4#define INCL_ERRORS
5#define INCL_AUDIO_VSD
6
7#include <os2.h>
8#include <os2me.h>
9#include <mcd.h>
10#include <audio.h>
11#include <stdio.h>
12#include <string.h>
13#include <hhpheap.h>
14#include <stdlib.h>
15#include <vsdcmds.h>
16#include <shdd.h>
17
18void EXPENTRY LogItToVSDLogFile (char * c);
19void EXPENTRY LogItToVSDLogFile2 (char * c, ULONG l1, char * c2, ULONG l2);
20void EXPENTRY LogItToVSDLogFile3 (HVSD hvsd, ULONG ulFunc, PSZ pszFunc, ULONG ulFlags, PSZ pszReq);
21void EXPENTRY LogItToVSDLogFile4 (PBYTE pRequest);
22
23BOOL fInitialized = FALSE;
24typedef ULONG (APIENTRY FNVSD)(HVSD, ULONG, ULONG, PVOID);
25typedef FNVSD * PFNVSD;
26PFNVSD pfnRealVSD = 0;
27
28typedef LONG (APIENTRY FNSHD)(PSHD_COMMON);
29typedef FNSHD * PFNSHD;
30PFNSHD pfnSHD = 0;
31
32HFILE hvsdLogFile = -1;
33
34/* Public API's */
35
36LONG VSDLOGOpen (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_OPEN_PARMS pRequest);
37LONG VSDLOGQuery (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest );
38LONG VSDLOGClose (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest );
39LONG VSDLOGSave (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest );
40LONG VSDLOGRestore(HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_RESTORE_PARMS pRequest );
41LONG VSDLOGDevUnits(HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_DEVUNITS_PARMS pRequest );
42LONG VSDLOGResource(HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_RESOURCE_PARMS pRequest );
43LONG VSDLOGSetCommand(HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest );
44LONG VSDLOGGetProdInfo(HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_GETPRODINFO_PARMS pRequest );
45LONG VSDLOGCaps (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_GETDEVCAPS_PARMS pRequest );
46LONG VSDLOGDDCMD (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest);
47LONG VSDLOGOther (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest);
48
49LONG EXPENTRY VSDLOGSHDEntryPoint (ULONG event, PVOID pMsg);
50#define VSDLOG_REPORTINT 1
51#define VSDLOG_REPORTEVENT 2
52#define VSDLOG_REPORTERROR 3
53
54PSZ pszQuery[] = {
55"",
56"VSD_QUERYAPERTURESIZE", // 1
57"VSD_QUERYAUDIOATTRIBUTES", // 2
58"VSD_QUERYAUDIOCAPABILITIES",// 3
59"VSD_QUERYBANK",// 4
60"VSD_QUERYBANKPOINTER",// 5
61"VSD_QUERYBANKS",// 6
62"VSD_QUERYCDCAPS",// 7
63"VSD_QUERYCOMMSETTINGS",// 8
64"VSD_QUERYCOMPATIBLECONNECTORS",// 9
65"VSD_QUERYCONNECTOR",// 10
66"VSD_QUERYCONNECTORTYPES",// 11
67"VSD_QUERYCOUNTER",// 12
68"VSD_QUERYCUE",// 13
69"VSD_QUERYDATATYPE",// 14
70"VSD_QUERYDIRECTION",// 15
71"VSD_QUERYDISPLAY",// 16
72"VSD_QUERYDOOR",// 17
73"VSD_QUERYEVENTLIST",// 18
74"VSD_QUERYFREEZE",// 19
75"VSD_QUERYIMAGEATTRIBUTES",// 20
76"VSD_QUERYINPUTLEVEL",// 21
77"VSD_QUERYINPUTLEVELS",// 22
78"VSD_QUERYKEYLOCK",// 23
79"VSD_QUERYLABEL",// 24
80"VSD_QUERYLENGTH",// 25
81"VSD_QUERYMEDIATYPE",// 26
82"VSD_QUERYMONITOR",// 27
83"VSD_QUERYPOSITION",// 28
84"VSD_QUERYPREROLLTYPE",// 29
85"VSD_QUERYPROCESSINTERNAL",// 30
86"VSD_QUERYRATE",// 31
87"VSD_QUERYRATELEVELS",// 32
88"VSD_QUERYSTATUSLEVEL",// 33
89"VSD_QUERYSUPPORTEDEVENTS",// 34
90"VSD_QUERYTIME",// 35
91"VSD_QUERYTOC",// 36
92"VSD_QUERYTRACKS",// 37
93"VSD_QUERYTTSATTRIBUTES",// 38
94"VSD_QUERYUPC",// 39
95"VSD_QUERYVIDEO",// 40
96"VSD_QUERYVIDEOATTRIBUTES",// 41
97"VSD_QUERYVIEWPORT",// 42
98"VSD_QUERYVIEWPORTPOSITION",// 43
99"VSD_QUERYVOLUME",// 44
100"VSD_QUERYVIDEORECT",// 45
101"VSD_QUERYFPS",// 46
102"VSD_QUERYIMAGEFORMAT",// 47
103"VSD_QUERYIMAGEEXTENTS",// 48
104"VSD_QUERYVIDEOEXTENTS",// 49
105"VSD_QUERYOVERLAYEXTENTS",// 50
106"VSD_QUERYTRANSPARENTCOLOR",// 51
107"VSD_QUERYCOLORKEYING",// 52
108"VSD_QUERYREADY",// 53
109"VSD_QUERYMIXSTATE",// 54
110"VSD_QUERYMIXCONNECTIONS",// 55
111"VSD_QUERYMIXCONTROL",// 56
112"VSD_QUERYMIXLINE",// 57
113"VSD_QUERYTUNERCHANNEL",// 58
114"VSD_QUERYCONNECTORSIGNAL",// 59
115"VSD_QUERYLOAD",// 60
116"VSD_QUERYCONNECTION"// 61
117};
118
119PSZ pszSet[] = {
120"", // 0
121"VSD_SETVIDEO",// 1
122"VSD_SETVOLUME",// 2
123"VSD_SETDISPLAY",// 3
124"VSD_SETVIDEOATTRIBUTES",// 4
125"VSD_SETIMAGEATTRIBUTES",// 5
126"VSD_SETTSATTRRIBUTES",// 6
127"VSD_SETINPUTLEVEL",// 7
128"VSD_SETMONITOR",// 8
129"VSD_SETDATATYPE",// 9
130"VSD_SETDOOR",// 10
131"VSD_SETCOMMSETTINGS",// 11
132"VSD_SETRATE",// 12
133"VSD_SETKEYLOCK",// 13
134"VSD_SETCUE",// 14
135"VSD_SETCOUNTER",// 15
136"VSD_SETPOSITION",// 16
137"VSD_SETCONNECTOR",// 17
138"VSD_SETDIRECTION",// 18
139"VSD_SETVIEWPORTPOSITION",// 19
140"VSD_SETVIEWPORT",// 20
141"VSD_SETBANK",// 21
142"VSD_SETVIDEORECT",// 22
143"VSD_SETIMAGEFORMAT",// 23
144"VSD_SETFPS",// 24
145"VSD_SETTRANSPARENTCOLOR",// 25
146"VSD_SETCOLORKEYING",// 26
147"VSD_SETAUDIOATTRIBUTES",// 27
148"VSD_SETMIXSTATE",// 28
149"VSD_SETMIXCONNECTIONS",// 29
150"VSD_SETMIXCONTROL",// 30
151"VSD_SETTUNERCHANNEL",// 31
152"VSD_SETCLIPLIST",// 32
153"VSD_SETCONNECTION" // 33
154};
155
156PSZ pszDDCMD[] = {
157"DDCMD_SETUP", // 0L
158"DDCMD_READ", // 1L
159"DDCMD_WRITE", // 2L
160"DDCMD_STATUS", // 3L
161"DDCMD_CONTROL", // 4L
162"DDCMD_REG_STREAM",// 5L
163"DDCMD_DEREG_STREAM" // 6L
164};
165
166PSZ pszCmd[] = {
167"DDCMD_START", // 1
168"DDCMD_STOP", // 2
169"DDCMD_PAUSE", // 3
170"DDCMD_RESUME", // 4
171"DDCMD_ENABLE_EVENT", // 5
172"DDCMD_DISABLE_EVENT", // 6
173"DDCMD_PAUSE_TIME", // 7
174"DDCMD_RESUME_TIME" // 8
175};
176
177/************************ START OF SPECIFICATIONS **************************
178*
179* SUBROUTINE NAME: VSDEntry
180*
181* FUNCTION: Ring 3 entry point for AUDIOIF calls from Amp/Mixer
182*
183* INPUT: HVSD hvsd Handle to the VSD
184* ULONG ulFunc Function to operate (i.e. VSD_OPEN, VSD_SET etc.)
185* ULONG ulFlags Flags to manipulate function
186* PVOID pRequest Pointer to function specific parameter.
187*
188* OUTPUT: returns VSDERR_SUCCESS if successful, otherwise it returns an
189* MCI error code.
190*
191*************************** END OF SPECIFICATIONS *************************/
192
193ULONG APIENTRY MM_VSDLOGEntry( HVSD hvsd,
194 ULONG ulFunc,
195 ULONG ulFlags,
196 PVOID pRequest )
197
198{
199 LONG lError = VSDERR_SUCCESS;
200 CHAR szFail[CCHMAXPATH];
201 PSZ pszEnv;
202 ULONG rc;
203 HMODULE hmod;
204 PSZ p;
205
206 if (!fInitialized) {
207 // SET VSDLOG_REALVSD=n,SB16VSD
208 // where n is the ordinal number of AmpMix01 of the ampmixer
209 // to debug.
210 if (!DosScanEnv("VSDLOG_REALVSD", (PSZ*)&pszEnv)) {
211 p = strchr (pszEnv, ',');
212 if (p) p++;
213 strcpy (szFail, p);
214 if (p = strchr(szFail, ';')) *p = 0; /* Remove After semicolon */
215 if (!(rc = DosLoadModule(szFail, CCHMAXPATH, szFail, &hmod))) {
216 if (!(rc = DosQueryProcAddr (hmod, 0L, "VSDEntry", (PFN*)&pfnRealVSD))) {
217 fInitialized = TRUE;
218 } else {
219 LogItToVSDLogFile2 ("QueryProcAddr Failed", rc, "VSDEntry", 0);
220 return (VSDERR_UNSUPPORTED_FUNCTION);
221 }
222 } else {
223 LogItToVSDLogFile2 ("Load Module of Real VSD Failed", rc, szFail, 0);
224 return (VSDERR_UNSUPPORTED_FUNCTION);
225 }
226 } else {
227 LogItToVSDLogFile2 ("SET REALVSD= Missing", 0, "", 0);
228 return (VSDERR_UNSUPPORTED_FUNCTION);
229 }
230 }
231
232 switch( ulFunc ) {
233
234 /**************************************
235 * Required functions for all VSD's.
236 **************************************/
237 /********************************************
238 * The first call a VSD will receive is an OPEN
239 *********************************************/
240
241 case VSD_OPEN:
242 lError = VSDLOGOpen(hvsd, ulFunc, ulFlags, ( PVSD_OPEN_PARMS ) pRequest );
243 break;
244
245 case VSD_DEVUNITS:
246 lError = VSDLOGDevUnits(hvsd, ulFunc, ulFlags, ( PVSD_DEVUNITS_PARMS )pRequest );
247 break;
248
249 case VSD_RESOURCE:
250 lError = VSDLOGResource(hvsd, ulFunc, ulFlags, ( PVSD_RESOURCE_PARMS ) pRequest );
251 break;
252
253 case VSD_RESTORE:
254 lError = VSDLOGRestore(hvsd, ulFunc, ulFlags, ( PVSD_RESTORE_PARMS ) pRequest );
255 break;
256
257 case VSD_SAVE:
258 lError = VSDLOGSave(hvsd, ulFunc, ulFlags, pRequest);
259 break;
260
261 case VSD_CLOSE:
262 lError = VSDLOGClose(hvsd, ulFunc, ulFlags, pRequest);
263 break;
264
265 case VSD_GETDEVCAPS:
266 lError = VSDLOGCaps(hvsd, ulFunc, ulFlags, ( PVSD_GETDEVCAPS_PARMS )pRequest);
267 break;
268
269 case VSD_QUERY:
270 lError = VSDLOGQuery(hvsd, ulFunc, ulFlags, pRequest);
271 break;
272
273 /**************************************
274 * Basic commands
275 **************************************/
276
277 case VSD_SET:
278 lError = VSDLOGSetCommand(hvsd, ulFunc, ulFlags, pRequest );
279 break;
280
281 /**************************************
282 * Other commands
283 **************************************/
284
285 // Merge of DDCMD.DLL with VSD.
286 case VSD_DDCMD:
287 lError = VSDLOGDDCMD (hvsd, ulFunc, ulFlags, pRequest);
288 break;
289
290 case VSD_ESCAPE:
291 case VSD_EVENTS :
292
293 /* Unsupported commands */
294
295 case VSD_CAPTUREIMAGE :
296 case VSD_EJECT :
297 case VSD_FREEZE :
298 case VSD_INSERTSETTINGSPAGE :
299 case VSD_LOAD :
300 case VSD_PARK :
301 case VSD_RESET :
302 case VSD_RESTOREIMAGE :
303 case VSD_SEEK :
304 case VSD_STEP :
305 lError = VSDLOGOther (hvsd, ulFunc, ulFlags, pRequest);
306 break;
307
308 /*----------------------------------------------------
309 * Audio VSDs DO NOT have to support getProdInfo (unless
310 * they want to). No portion of MMPM2 will call the VSD
311 * requesting this info (remember, this is true only for
312 * audio). This information is obtained by the mixer
313 * via an MCI_SYSINFO call since each driver must place
314 * the information in the ini file when it is installed.
315 *---------------------------------------------------*/
316 case VSD_GETPRODINFO:
317 lError = VSDLOGGetProdInfo(hvsd, ulFunc, ulFlags, (PVSD_GETPRODINFO_PARMS) pRequest);
318 break;
319
320 /*---------------------------------------------------------*
321 * Unknown message received
322 *---------------------------------------------------------*/
323
324 default:
325 lError = VSDERR_UNRECOGNIZED_COMMAND;
326 LogItToVSDLogFile2 ("Unknown VSD Command", ulFunc, "rc:", lError);
327 break;
328 }
329
330 return(lError);
331
332} /* VSDEntry */
333
334
335//
336// LogItToVSDLogFile - this is not a class member, so we can easily set a breakpoint on this name in kernal debug
337//
338// if MMLOGFILE is set,
339// Then Log to filename or 1 for stdout
340// else Log to stdout
341//
342void EXPENTRY LogItToVSDLogFile (char * c)
343{
344 unsigned long cbwrite;
345 char * pszEnv;
346
347 if (hvsdLogFile == -1) {
348 if (DosScanEnv ("VSDLOG_LOGFILE", (PSZ *)&pszEnv)) {
349 hvsdLogFile = 0; // no logging
350 } else {
351 if (!strcmp(pszEnv, "1")) {
352 hvsdLogFile = 1; // log to stdout
353 } else {
354 ULONG act = 0;
355 if (DosOpen (pszEnv,&hvsdLogFile,&act,0L,0,FILE_CREATE | FILE_TRUNCATE,
356 OPEN_FLAGS_NOINHERIT | OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE | OPEN_FLAGS_WRITE_THROUGH,
357 0L)) {
358 hvsdLogFile = 1; // can't open but still want to log
359 }
360 }
361 }
362 }
363
364 if (hvsdLogFile) {
365 DosWrite (hvsdLogFile, c, strlen(c), &cbwrite);
366 DosWrite (hvsdLogFile, "\r\n", 2, &cbwrite);
367 }
368}
369
370
371void EXPENTRY LogItToVSDLogFile2 (char * c, ULONG l1, char * c2, ULONG l2)
372{
373 CHAR szLine[CCHMAXPATH];
374 strcpy (szLine, c);
375 strcat (szLine, " ");
376 itoa(l1, &szLine[strlen(szLine)], 10);
377 strcat (szLine, " ");
378 strcat (szLine, c2);
379 strcat (szLine, " ");
380 itoa(l2, &szLine[strlen(szLine)], 10);
381 LogItToVSDLogFile(szLine);
382}
383
384void EXPENTRY LogItToVSDLogFile3 (HVSD hvsd, ULONG ulFunc, PSZ pszFunc, ULONG ulFlags, PSZ pszReq)
385{
386 CHAR szLine[CCHMAXPATH];
387 strcpy (szLine, "");
388 LogItToVSDLogFile(szLine);
389
390 itoa((ULONG)hvsd, szLine, 16);
391 strcat (szLine, " ");
392 itoa(ulFunc, &szLine[strlen(szLine)], 10);
393 strcat (szLine, " ");
394 strcat (szLine, pszFunc);
395 strcat (szLine, " ");
396 itoa(ulFlags, &szLine[strlen(szLine)], 16);
397 strcat (szLine, " ");
398 strcat (szLine, pszReq);
399 LogItToVSDLogFile(szLine);
400}
401
402void EXPENTRY LogItToVSDLogFile4 (PBYTE pRequest)
403{
404 PULONG pData;
405 ULONG ulLen,i,j;
406 CHAR szLine[CCHMAXPATH*2];
407 CHAR szNumber[10];
408
409 if (!pRequest) return;
410 ulLen = *(PULONG)pRequest/4;
411
412 strcpy (szLine, "Request: ");
413 for (i=0; i<ulLen && i<20; i++) {
414 itoa ((ULONG)((PULONG)pRequest)[i], szNumber, 16);
415 for (j=0; j<9-strlen(szNumber); j++) strcat (szLine, "0");
416 itoa ((ULONG)((PULONG)pRequest)[i], &szLine[strlen(szLine)], 16);
417 strcat (szLine, " ");
418 }
419 LogItToVSDLogFile(szLine);
420}
421
422LONG VSDLOGOpen (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_OPEN_PARMS pRequest)
423{
424 LONG lError;
425 CHAR szLine[CCHMAXPATH];
426 LogItToVSDLogFile3 (hvsd, ulFunc, "VSD_OPEN", ulFlags, "");
427 LogItToVSDLogFile2 (" ulCategory:", pRequest->ulCategory, "", 0);
428 LogItToVSDLogFile2 (" szInstallName:", 0, pRequest->szInstallName, 0);
429 LogItToVSDLogFile2 (" szPDDName:", 0, pRequest->szPDDName, 0);
430 LogItToVSDLogFile2 (" ulSampleRate:", ((VSD_AUDIOOPEN_PARMS*)pRequest->pDevInfo)->ulSamplingRate, "", 0);
431 LogItToVSDLogFile2 (" ulBitsPerSample:", ((VSD_AUDIOOPEN_PARMS*)pRequest->pDevInfo)->ulBitsPerSample, "", 0);
432 LogItToVSDLogFile2 (" ulChannels:", ((VSD_AUDIOOPEN_PARMS*)pRequest->pDevInfo)->ulChannels, "", 0);
433 LogItToVSDLogFile2 (" ulDataType:", ((VSD_AUDIOOPEN_PARMS*)pRequest->pDevInfo)->ulDataType, "", 0);
434 LogItToVSDLogFile2 (" ulDeviceID:", ((VSD_AUDIOOPEN_PARMS*)pRequest->pDevInfo)->ulDeviceID, "", 0);
435 LogItToVSDLogFile2 (" ulOperation:", ((VSD_AUDIOOPEN_PARMS*)pRequest->pDevInfo)->ulOperation, "", 0);
436 LogItToVSDLogFile2 (" ParmString:", 0, ((VSD_AUDIOOPEN_PARMS*)pRequest->pDevInfo)->pParmString, 0);
437 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
438 LogItToVSDLogFile2 (" HVSD:", (ULONG)pRequest->hvsd, "", 0);
439 LogItToVSDLogFile2 ("VSD_OPEN", (ULONG)pRequest, "rc:", (ULONG)lError);
440 return (lError);
441}
442
443LONG VSDLOGQuery (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest )
444{
445 LONG lError;
446 LogItToVSDLogFile3 (hvsd, ulFunc, "VSD_QUERY", ulFlags, pszQuery[ulFlags]);
447 if (ulFlags != VSD_QUERYMONITOR) {
448 LogItToVSDLogFile4((PBYTE)pRequest);
449 }
450 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
451 if (ulFlags != VSD_QUERYMONITOR) {
452 LogItToVSDLogFile4((PBYTE)pRequest);
453 } else {
454 LogItToVSDLogFile2 ("fMonitor:", (ULONG)*(PULONG)pRequest, "", (ULONG)0);
455 }
456 LogItToVSDLogFile2 ("VSD_QUERY", (ULONG)pRequest, "rc:", (ULONG)lError);
457 return (lError);
458}
459
460LONG VSDLOGClose (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest )
461{
462 LONG lError;
463 LogItToVSDLogFile3 (hvsd, ulFunc, "VSD_CLOSE", ulFlags, "");
464 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
465 LogItToVSDLogFile2 ("VSD_CLOSE", (ULONG)pRequest, "rc:", (ULONG)lError);
466 return (lError);
467}
468
469LONG VSDLOGSave (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest )
470{
471 LONG lError;
472 LogItToVSDLogFile3 (hvsd, ulFunc, "VSD_SAVE", ulFlags, "");
473 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
474 LogItToVSDLogFile2 ("VSD_SAVE", (ULONG)pRequest, "rc:", (ULONG)lError);
475 return (lError);
476}
477
478LONG VSDLOGRestore(HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_RESTORE_PARMS pRequest )
479{
480 LONG lError;
481 LogItToVSDLogFile3 (hvsd, ulFunc, "VSD_RESTORE", ulFlags, "");
482 LogItToVSDLogFile4 ((PBYTE)pRequest);
483 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
484 LogItToVSDLogFile4 ((PBYTE)pRequest);
485 LogItToVSDLogFile2 ("VSD_RESTORE", (ULONG)pRequest, "rc:", (ULONG)lError);
486 return (lError);
487}
488
489LONG VSDLOGDevUnits(HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_DEVUNITS_PARMS pRequest )
490{
491 LONG lError;
492 ULONG i;
493 LogItToVSDLogFile3 (hvsd, ulFunc, "VSD_DEVUNITS", ulFlags, "");
494 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
495 LogItToVSDLogFile2 (" ulUnits", pRequest->ulUnits, "", 0);
496 for (i=0; i<pRequest->ulUnits; i++) {
497 LogItToVSDLogFile2 (" ulDevType", pRequest->VSD_Unit[i].ulDevType, "", 0);
498 LogItToVSDLogFile2 (" szUnit", 0, pRequest->VSD_Unit[i].szUNIT, 0);
499 }
500 LogItToVSDLogFile2 ("VSD_DEVUNITS", (ULONG)pRequest, "rc:", (ULONG)lError);
501 return (lError);
502}
503
504LONG VSDLOGResource(HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_RESOURCE_PARMS pRequest )
505{
506 LONG lError;
507 LogItToVSDLogFile3 (hvsd, ulFunc, "VSD_RESOURCE", ulFlags, "");
508 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
509 LogItToVSDLogFile2 (" szPDDName", 0, pRequest->szPDDName, 0);
510 LogItToVSDLogFile2 (" ulDevType", pRequest->ulDevType, "", 0);
511 LogItToVSDLogFile2 (" ulDataType", pRequest->ulDataType, "", 0);
512 LogItToVSDLogFile2 (" ulResUnits", pRequest->ulResUnits, "", 0);
513 LogItToVSDLogFile2 (" ulClass", pRequest->ulClass, "", 0);
514 LogItToVSDLogFile2 ("VSD_RESOURCE", (ULONG)pRequest, "rc:", (ULONG)lError);
515 return (lError);
516}
517
518LONG VSDLOGSetCommand(HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest )
519{
520 LONG lError;
521 LogItToVSDLogFile3 (hvsd, ulFunc, "VSD_SETCOMMAND", ulFlags, pszSet[ulFlags]);
522 if (ulFlags == VSD_SETMONITOR) {
523 LogItToVSDLogFile2 ("fMonitor:", (ULONG)pRequest, "", (ULONG)0);
524 } else {
525 LogItToVSDLogFile4((PBYTE)pRequest);
526 }
527 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
528 if (ulFlags == VSD_SETMONITOR) {
529 LogItToVSDLogFile2 ("fMonitor:", (ULONG)pRequest, "", (ULONG)0);
530 } else {
531 LogItToVSDLogFile4((PBYTE)pRequest);
532 }
533 LogItToVSDLogFile2 ("VSD_SETCOMMAND", (ULONG)pRequest, "rc:", (ULONG)lError);
534 return (lError);
535}
536
537LONG VSDLOGGetProdInfo(HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_GETPRODINFO_PARMS pRequest)
538{
539 LONG lError;
540 LogItToVSDLogFile3 (hvsd, ulFunc, "VSD_GETPRODINFO", ulFlags, "");
541 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
542 LogItToVSDLogFile2 (" VSD.szProdInfo", 0, pRequest->VSD.szProdInfo, 0);
543 LogItToVSDLogFile2 (" VSD.szManufacture", 0, pRequest->VSD.szManufacture, 0);
544 LogItToVSDLogFile2 (" VSD.szVersion", 0, pRequest->VSD.szVersion, 0);
545 LogItToVSDLogFile2 (" PDD.szProdInfo", 0, pRequest->PDD.szProdInfo, 0);
546 LogItToVSDLogFile2 (" PDD.szManufacture", 0, pRequest->PDD.szManufacture, 0);
547 LogItToVSDLogFile2 (" PDD.szVersion", 0, pRequest->PDD.szVersion, 0);
548 LogItToVSDLogFile2 ("VSD_GETPRODINFO", (ULONG)pRequest, "rc:", (ULONG)lError);
549 return (lError);
550}
551
552LONG VSDLOGCaps (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVSD_GETDEVCAPS_PARMS pRequest )
553{
554 LONG lError;
555 LogItToVSDLogFile3 (hvsd, ulFunc, "VSD_CAPS", ulFlags, "");
556 LogItToVSDLogFile4((PBYTE)pRequest);
557 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
558 LogItToVSDLogFile4((PBYTE)pRequest);
559 LogItToVSDLogFile2 ("VSD_CAPS", (ULONG)pRequest, "rc:", (ULONG)lError);
560 return (lError);
561}
562
563LONG VSDLOGOther (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest)
564{
565 LONG lError;
566 LogItToVSDLogFile3 (hvsd, ulFunc, "?", ulFlags, "");
567 LogItToVSDLogFile4((PBYTE)pRequest);
568 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
569 LogItToVSDLogFile4((PBYTE)pRequest);
570 LogItToVSDLogFile2 ("?", (ULONG)pRequest, "rc:", (ULONG)lError);
571 return (lError);
572}
573
574
575LONG VSDLOGDDCMD (HVSD hvsd, ULONG ulFunc, ULONG ulFlags, PVOID pRequest)
576{
577 LONG lError;
578 ULONG i;
579 PDDCMDCOMMON pCommon = (PDDCMDCOMMON) pRequest;
580
581 LogItToVSDLogFile3 (hvsd, ulFunc, "VSD_DDCMD", ulFlags, pszDDCMD[pCommon->ulFunction]);
582 LogItToVSDLogFile2 (" hStream", 0, "", (ULONG)pCommon->hStream);
583
584 switch (pCommon->ulFunction)
585 {
586 case DDCMD_READ:
587 case DDCMD_WRITE:
588 LogItToVSDLogFile2 ("Buffer:", (ULONG)((DDCMDREADWRITE*)pCommon)->pBuffer, (((DDCMDREADWRITE*)pCommon)->fEOS ? "EOS BufLen:" : "BufLen:"), (ULONG)((DDCMDREADWRITE*)pCommon)->ulBufferSize);
589 break;
590
591 case DDCMD_CONTROL:
592 LogItToVSDLogFile2 (" Command:", ((DDCMDCONTROL*)pCommon)->ulCmd, pszCmd[((DDCMDCONTROL*)pCommon)->ulCmd], 0);
593 break;
594
595 case DDCMD_REG_STREAM:
596 LogItToVSDLogFile2 (" Reg:", 0, "ulSysFileNum", ((DDCMDREGISTER*)pCommon)->ulSysFileNum);
597 LogItToVSDLogFile2 (" Reg:", 0, "ulStreamOperation", ((DDCMDREGISTER*)pCommon)->ulStreamOperation);
598 LogItToVSDLogFile2 (" Reg:", 0, "hid", ((DDCMDREGISTER*)pCommon)->hid);
599 LogItToVSDLogFile2 (" Reg:", 0, "lSRate", ((DDCMDREGISTER*)pCommon)->AudioMode.lSRate);
600 LogItToVSDLogFile2 (" Reg:", 0, "lBitsPerSRate", ((DDCMDREGISTER*)pCommon)->AudioMode.lBitsPerSRate);
601 LogItToVSDLogFile2 (" Reg:", 0, "sChannels", ((DDCMDREGISTER*)pCommon)->AudioMode.sChannels);
602 LogItToVSDLogFile2 (" Reg:", 0, "SPCB datatype", ((DDCMDREGISTER*)pCommon)->spcbkey.ulDataType);
603 break;
604 }
605 lError = (*pfnRealVSD)(hvsd, ulFunc, ulFlags, (PVOID)pRequest);
606 switch (pCommon->ulFunction)
607 {
608 case DDCMD_REG_STREAM:
609 LogItToVSDLogFile2 (" Reg:", 0, "ulBufSize", ((DDCMDREGISTER*)pCommon)->ulBufSize);
610 LogItToVSDLogFile2 (" Reg:", 0, "ulNumBufs", ((DDCMDREGISTER*)pCommon)->ulNumBufs);
611 break;
612 }
613 LogItToVSDLogFile2 ("VSD_DDCMD", (ULONG)pRequest, "rc:", (ULONG)lError);
614 return (lError);
615}
616
617
618LONG EXPENTRY VSDLOGSHDEntryPoint (ULONG event, PVOID pMsg)
619{
620 ULONG i;
621 PMSG_REPORTINT pInt;
622 PMSG_REPORTEVENT pEvent;
623
624 if (hvsdLogFile && fInitialized) {
625 switch (event) {
626 case VSDLOG_REPORTINT:
627 pInt = (PMSG_REPORTINT) pMsg;
628 LogItToVSDLogFile ("");
629 LogItToVSDLogFile2 ("SHDReportInt", (ULONG)0, "Buffer:", (ULONG)pInt->pBuffer);
630 LogItToVSDLogFile2 (" Flags:", (ULONG)pInt->ulFlag, "Status:", (ULONG)pInt->ulStatus);
631 break;
632 case VSDLOG_REPORTEVENT:
633 LogItToVSDLogFile ("");
634 pEvent = (PMSG_REPORTEVENT) pMsg;
635 LogItToVSDLogFile2 ("SHDReportEvent", (ULONG)0, "Event:", (ULONG)pEvent->hevent);
636 break;
637 case VSDLOG_REPORTERROR:
638 LogItToVSDLogFile ("");
639 LogItToVSDLogFile2 ("REPORT_ERROR", (ULONG)0, "Error:", (ULONG)pMsg);
640 break;
641 }
642 }
643 return (0);
644}
645
Note: See TracBrowser for help on using the repository browser.