annotate loader/driver.c @ 10218:f82646fc1431

Moved video filters to a separate section, moved slave mode section to the tech subdir, random improvements, default indentation reduced. Straight from the LUG camp Felsberg by Jonas and Diego.
author jonas
date Sat, 31 May 2003 16:41:41 +0000
parents 11cee15b1a8f
children d1d0b81f15c9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
1 #include "config.h"
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
2
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
3 #include <stdio.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
4 #ifdef HAVE_MALLOC_H
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
5 #include <malloc.h>
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
6 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
7 #include <stdlib.h>
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
8 #ifdef __FreeBSD__
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
9 #include <sys/time.h>
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
10 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
11
2068
3189c317dfc1 using ldt_keeper instead of setup_fs, includes changed
arpi
parents: 1307
diff changeset
12 #include "win32.h"
3189c317dfc1 using ldt_keeper instead of setup_fs, includes changed
arpi
parents: 1307
diff changeset
13 #include "wine/driver.h"
3189c317dfc1 using ldt_keeper instead of setup_fs, includes changed
arpi
parents: 1307
diff changeset
14 #include "wine/pe_image.h"
3189c317dfc1 using ldt_keeper instead of setup_fs, includes changed
arpi
parents: 1307
diff changeset
15 #include "wine/winreg.h"
3189c317dfc1 using ldt_keeper instead of setup_fs, includes changed
arpi
parents: 1307
diff changeset
16 #include "wine/vfw.h"
3189c317dfc1 using ldt_keeper instead of setup_fs, includes changed
arpi
parents: 1307
diff changeset
17 #include "registry.h"
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
18 #ifdef WIN32_LOADER
2068
3189c317dfc1 using ldt_keeper instead of setup_fs, includes changed
arpi
parents: 1307
diff changeset
19 #include "ldt_keeper.h"
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
20 #endif
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
21 #include "driver.h"
9978
11cee15b1a8f last mingw32 support patch by Sascha Sommer
alex
parents: 9967
diff changeset
22 #ifndef __MINGW32__
8451
fb88ccbc5ccc compiler warning fixes
arpi
parents: 7386
diff changeset
23 #include "ext.h"
9978
11cee15b1a8f last mingw32 support patch by Sascha Sommer
alex
parents: 9967
diff changeset
24 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
25
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
26 #ifndef WIN32_LOADER
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
27 char* def_path=WIN32_PATH;
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
28 #else
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
29 extern char* def_path;
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
30 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
31
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
32 #if 1
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
33
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
34 /*
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
35 * STORE_ALL/REST_ALL seems like an attempt to workaround problems due to
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
36 * WINAPI/no-WINAPI bustage.
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
37 *
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
38 * There should be no need for the STORE_ALL/REST_ALL hack once all
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
39 * function definitions agree with their prototypes (WINAPI-wise) and
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
40 * we make sure, that we do not call these functions without a proper
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
41 * prototype in scope.
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
42 */
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
43
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
44 #define STORE_ALL
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
45 #define REST_ALL
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
46 #else
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
47 // this asm code is no longer needed
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
48 #define STORE_ALL \
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
49 __asm__ __volatile__ ( \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
50 "push %%ebx\n\t" \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51 "push %%ecx\n\t" \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52 "push %%edx\n\t" \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53 "push %%esi\n\t" \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
54 "push %%edi\n\t"::)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
55
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56 #define REST_ALL \
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
57 __asm__ __volatile__ ( \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58 "pop %%edi\n\t" \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
59 "pop %%esi\n\t" \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
60 "pop %%edx\n\t" \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
61 "pop %%ecx\n\t" \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
62 "pop %%ebx\n\t"::)
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 340
diff changeset
63 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
64
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
65 static int needs_free=0;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
66 void SetCodecPath(const char* path)
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
67 {
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
68 if(needs_free)free(def_path);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
69 if(path==0)
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
70 {
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
71 def_path=WIN32_PATH;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
72 needs_free=0;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
73 return;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
74 }
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
75 def_path = (char*) malloc(strlen(path)+1);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
76 strcpy(def_path, path);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
77 needs_free=1;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
78 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
79
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
80 static DWORD dwDrvID = 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
81
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
82 LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT message,
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
83 LPARAM lParam1, LPARAM lParam2)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
84 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
85 DRVR* module=(DRVR*)hDriver;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
86 int result;
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
87 #ifndef __svr4__
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
88 char qw[300];
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
89 #endif
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
90 #ifdef DETAILED_OUT
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
91 printf("SendDriverMessage: driver %X, message %X, arg1 %X, arg2 %X\n", hDriver, message, lParam1, lParam2);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
92 #endif
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
93 if (!module || !module->hDriverModule || !module->DriverProc) return -1;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
94 #ifndef __svr4__
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
95 __asm__ __volatile__ ("fsave (%0)\n\t": :"r"(&qw));
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
96 #endif
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
97
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
98 #ifdef WIN32_LOADER
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
99 Setup_FS_Segment();
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
100 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
101
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
102 STORE_ALL;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
103 result=module->DriverProc(module->dwDriverID, hDriver, message, lParam1, lParam2);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
104 REST_ALL;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
105
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
106 #ifndef __svr4__
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
107 __asm__ __volatile__ ("frstor (%0)\n\t": :"r"(&qw));
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
108 #endif
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
109
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
110 #ifdef DETAILED_OUT
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
111 printf("\t\tResult: %X\n", result);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
112 #endif
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
113 return result;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
114 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
115
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
116 void DrvClose(HDRVR hDriver)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
117 {
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
118 if (hDriver)
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
119 {
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
120 DRVR* d = (DRVR*)hDriver;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
121 if (d->hDriverModule)
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
122 {
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
123 #ifdef WIN32_LOADER
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
124 Setup_FS_Segment();
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
125 #endif
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
126 if (d->DriverProc)
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
127 {
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
128 SendDriverMessage(hDriver, DRV_CLOSE, 0, 0);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
129 d->dwDriverID = 0;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
130 SendDriverMessage(hDriver, DRV_FREE, 0, 0);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
131 }
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
132 FreeLibrary(d->hDriverModule);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
133 }
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
134 free(d);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
135 }
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
136 #ifdef WIN32_LOADER
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
137 CodecRelease();
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
138 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
139 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
140
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
141 //DrvOpen(LPCSTR lpszDriverName, LPCSTR lpszSectionName, LPARAM lParam2)
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
142 HDRVR DrvOpen(LPARAM lParam2)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
143 {
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
144 NPDRVR hDriver;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
145 int i;
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
146 char unknown[0x124];
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
147 const char* filename = (const char*) ((ICOPEN*) lParam2)->pV1Reserved;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
148
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
149 #ifdef MPLAYER
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
150 #ifdef WIN32_LOADER
236
a2c9731b2e01 Setup_FS_Segment() for VoxWare audio
arpi_esp
parents: 185
diff changeset
151 Setup_LDT_Keeper();
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
152 #endif
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
153 printf("Loading codec DLL: '%s'\n",filename);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
154 #endif
236
a2c9731b2e01 Setup_FS_Segment() for VoxWare audio
arpi_esp
parents: 185
diff changeset
155
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
156 hDriver = (NPDRVR) malloc(sizeof(DRVR));
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
157 if (!hDriver)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
158 return ((HDRVR) 0);
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
159 memset((void*)hDriver, 0, sizeof(DRVR));
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
160
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
161 #ifdef WIN32_LOADER
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
162 CodecAlloc();
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
163 Setup_FS_Segment();
9967
b0d1b415320c cygwin support patch by Sascha Sommer and some fixes by me
alex
parents: 8451
diff changeset
164 #endif
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
165
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
166 hDriver->hDriverModule = LoadLibraryA(filename);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
167 if (!hDriver->hDriverModule)
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
168 {
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
169 printf("Can't open library %s\n", filename);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
170 DrvClose((HDRVR)hDriver);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
171 return ((HDRVR) 0);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
172 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
173
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
174 hDriver->DriverProc = (DRIVERPROC) GetProcAddress(hDriver->hDriverModule,
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
175 "DriverProc");
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
176 if (!hDriver->DriverProc)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
177 {
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
178 printf("Library %s is not a valid VfW/ACM codec\n", filename);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
179 DrvClose((HDRVR)hDriver);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
180 return ((HDRVR) 0);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
181 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
182
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
183 TRACE("DriverProc == %X\n", hDriver->DriverProc);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
184 SendDriverMessage((HDRVR)hDriver, DRV_LOAD, 0, 0);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
185 TRACE("DRV_LOAD Ok!\n");
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
186 SendDriverMessage((HDRVR)hDriver, DRV_ENABLE, 0, 0);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
187 TRACE("DRV_ENABLE Ok!\n");
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
188 hDriver->dwDriverID = ++dwDrvID; // generate new id
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
189
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
190 // open driver and remmeber proper DriverID
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
191 hDriver->dwDriverID = SendDriverMessage((HDRVR)hDriver, DRV_OPEN, (LPARAM) unknown, lParam2);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
192 TRACE("DRV_OPEN Ok!(%X)\n", hDriver->dwDriverID);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
193
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
194 printf("Loaded DLL driver %s\n", filename);
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3465
diff changeset
195 return (HDRVR)hDriver;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
196 }