2 * Wine Drivers functions
4 * Copyright 1994 Martin Ayotte
7 static char Copyright
[] = "Copyright Martin Ayotte, 1994";
16 LPDRIVERITEM lpDrvItemList
= NULL
;
18 void LoadStartupDrivers()
23 LPSTR file
= "SYSTEM.INI";
24 if (GetPrivateProfileString("drivers", NULL
,
25 "", str
, sizeof(str
), file
) < 2) {
26 printf("LoadStartupDrivers // can't find drivers section in '%s'\n", file
);
29 while(strlen(ptr
) != 0) {
30 printf("LoadStartupDrivers // str='%s'\n", ptr
);
31 hDrv
= OpenDriver(ptr
, "drivers", 0L);
32 printf("LoadStartupDrivers // hDrv=%04X\n", hDrv
);
33 ptr
+= strlen(ptr
) + 1;
35 printf("LoadStartupDrivers // end of list !\n");
38 /**************************************************************************
39 * SendDriverMessage [USER.251]
41 LRESULT WINAPI
SendDriverMessage(HDRVR hDriver
, WORD msg
, LPARAM lParam1
, LPARAM lParam2
)
43 printf("SendDriverMessage(%04X, %04X, %08X, %08X);\n",
44 hDriver
, msg
, lParam1
, lParam2
);
47 /**************************************************************************
48 * OpenDriver [USER.252]
50 HDRVR
OpenDriver(LPSTR lpDriverName
, LPSTR lpSectionName
, LPARAM lParam
)
53 LPDRIVERITEM lpnewdrv
;
54 LPDRIVERITEM lpdrv
= lpDrvItemList
;
56 printf("OpenDriver('%s', '%s', %08X);\n",
57 lpDriverName
, lpSectionName
, lParam
);
58 if (lpSectionName
== NULL
) lpSectionName
= "drivers";
59 GetPrivateProfileString(lpSectionName
, lpDriverName
,
60 "", DrvName
, sizeof(DrvName
), "SYSTEM.INI");
61 printf("OpenDriver // DrvName='%s'\n", DrvName
);
62 if (strlen(DrvName
) < 1) return 0;
63 while (lpdrv
!= NULL
) {
64 if (lpdrv
->lpNextItem
== NULL
) break;
65 lpdrv
= lpdrv
->lpNextItem
;
67 hDrvr
= GlobalAlloc(GMEM_MOVEABLE
, sizeof(DRIVERITEM
));
68 lpnewdrv
= (LPDRIVERITEM
) GlobalLock(hDrvr
);
69 if (lpnewdrv
== NULL
) return 0;
70 lpnewdrv
->dis
.length
= sizeof(DRIVERINFOSTRUCT
);
71 lpnewdrv
->dis
.hModule
= 0;
72 /* lpnewdrv->dis.hModule = LoadImage(DrvName, DLL, 0);
73 if (lpnewdrv->dis.hModule == 0) {
78 lpnewdrv
->dis
.hDriver
= hDrvr
;
79 strcpy(lpnewdrv
->dis
.szAliasName
, lpDriverName
);
81 lpnewdrv
->lpNextItem
= NULL
;
82 if (lpDrvItemList
== NULL
|| lpdrv
== NULL
) {
83 lpDrvItemList
= lpnewdrv
;
84 lpnewdrv
->lpPrevItem
= NULL
;
87 lpdrv
->lpNextItem
= lpnewdrv
;
88 lpnewdrv
->lpPrevItem
= lpdrv
;
90 lpnewdrv
->lpDrvProc
= NULL
;
91 printf("OpenDriver // hDrvr=%04X loaded !\n", hDrvr
);
95 /**************************************************************************
96 * CloseDriver [USER.253]
98 LRESULT
CloseDriver(HDRVR hDrvr
, LPARAM lParam1
, LPARAM lParam2
)
101 printf("CloseDriver(%04X, %08X, %08X);\n", hDrvr
, lParam1
, lParam2
);
102 lpdrv
= (LPDRIVERITEM
) GlobalLock(hDrvr
);
103 if (lpdrv
!= NULL
&& lpdrv
->dis
.hDriver
== hDrvr
) {
104 if (lpdrv
->lpPrevItem
)
105 ((LPDRIVERITEM
)lpdrv
->lpPrevItem
)->lpNextItem
= lpdrv
->lpNextItem
;
106 if (lpdrv
->lpNextItem
)
107 ((LPDRIVERITEM
)lpdrv
->lpNextItem
)->lpPrevItem
= lpdrv
->lpPrevItem
;
110 printf("CloseDriver // hDrvr=%04X closed !\n", hDrvr
);
116 /**************************************************************************
117 * GetDriverModuleHandle [USER.254]
119 HANDLE
GetDriverModuleHandle(HDRVR hDrvr
)
123 printf("GetDriverModuleHandle(%04X);\n", hDrvr
);
124 lpdrv
= (LPDRIVERITEM
) GlobalLock(hDrvr
);
126 hModule
= lpdrv
->dis
.hModule
;
132 /**************************************************************************
133 * DefDriverProc [USER.255]
135 LRESULT
DefDriverProc(DWORD dwDevID
, HDRVR hDriv
, WORD wMsg
,
136 DWORD dwParam1
, DWORD dwParam2
)
151 case DRV_QUERYCONFIGURE
:
154 MessageBox((HWND
)NULL
, "Driver isn't configurable !",
155 "Wine Driver", MB_OK
);
158 return (LRESULT
)DRVCNF_RESTART
;
160 return (LRESULT
)DRVCNF_RESTART
;
166 /**************************************************************************
167 * GetDriverInfo [USER.256]
169 BOOL
GetDriverInfo(HDRVR hDrvr
, LPDRIVERINFOSTRUCT lpDrvInfo
)
172 printf("GetDriverInfo(%04X, %08X);\n", hDrvr
, lpDrvInfo
);
173 if (lpDrvInfo
== NULL
) return FALSE
;
174 lpdrv
= (LPDRIVERITEM
) GlobalLock(hDrvr
);
175 if (lpdrv
== NULL
) return FALSE
;
176 memcpy(lpDrvInfo
, &lpdrv
->dis
, sizeof(DRIVERINFOSTRUCT
));
181 /**************************************************************************
182 * GetNextDriver [USER.257]
184 HDRVR
GetNextDriver(HDRVR hDrvr
, DWORD dwFlags
)
188 printf("GetNextDriver(%04X, %08X);\n", hDrvr
, dwFlags
);
190 if (lpDrvItemList
== NULL
) {
191 printf("GetNextDriver // drivers list empty !\n");
192 LoadStartupDrivers();
193 if (lpDrvItemList
== NULL
) return 0;
195 printf("GetNextDriver // return first %04X !\n",
196 lpDrvItemList
->dis
.hDriver
);
197 return lpDrvItemList
->dis
.hDriver
;
199 lpdrv
= (LPDRIVERITEM
) GlobalLock(hDrvr
);
201 if (dwFlags
& GND_REVERSE
) {
202 if (lpdrv
->lpPrevItem
)
203 hRetDrv
= ((LPDRIVERITEM
)lpdrv
->lpPrevItem
)->dis
.hDriver
;
206 if (lpdrv
->lpNextItem
)
207 hRetDrv
= ((LPDRIVERITEM
)lpdrv
->lpNextItem
)->dis
.hDriver
;
211 printf("GetNextDriver // return %04X !\n", hRetDrv
);