Added support for loading drivers in Wine.
This commit is contained in:
parent
c17616299a
commit
0248381a14
114
include/driver.h
114
include/driver.h
|
@ -24,61 +24,46 @@
|
|||
|
||||
#define DRVCNF_CANCEL 0x0000
|
||||
#define DRVCNF_OK 0x0001
|
||||
#define DRVCNF_RESTART 0x0002
|
||||
#define DRVCNF_RESTART 0x0002
|
||||
|
||||
#define DRVEA_NORMALEXIT 0x0001
|
||||
#define DRVEA_ABNORMALEXIT 0x0002
|
||||
#define DRVEA_NORMALEXIT 0x0001
|
||||
#define DRVEA_ABNORMALEXIT 0x0002
|
||||
|
||||
#define DRV_SUCCESS 0x0001
|
||||
#define DRV_FAILURE 0x0000
|
||||
|
||||
#define GND_FIRSTINSTANCEONLY 0x00000001
|
||||
|
||||
#define GND_FORWARD 0x00000000
|
||||
#define GND_REVERSE 0x00000002
|
||||
#define GND_FORWARD 0x00000000
|
||||
#define GND_REVERSE 0x00000002
|
||||
|
||||
/* FIXME: unused? */
|
||||
typedef struct {
|
||||
DWORD dwDCISize;
|
||||
LPCSTR lpszDCISectionName;
|
||||
LPCSTR lpszDCIAliasName;
|
||||
} xDRVCONFIGINFO, *xLPDRVCONFIGINFO;
|
||||
DWORD dwDCISize;
|
||||
LPCSTR lpszDCISectionName;
|
||||
LPCSTR lpszDCIAliasName;
|
||||
} DRVCONFIGINFO16, *LPDRVCONFIGINFO16;
|
||||
|
||||
typedef struct {
|
||||
DWORD dwDCISize;
|
||||
LPCWSTR lpszDCISectionName;
|
||||
LPCWSTR lpszDCIAliasName;
|
||||
} DRVCONFIGINFO32, *LPDRVCONFIGINFO32;
|
||||
|
||||
DECL_WINELIB_TYPE(DRVCONFIGINFO)
|
||||
DECL_WINELIB_TYPE(LPDRVCONFIGINFO)
|
||||
|
||||
/* GetDriverInfo16 references this structure, so this a struct defined
|
||||
* in the Win16 API.
|
||||
* GetDriverInfo has been deprecated in Win32.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
UINT16 length;
|
||||
HDRVR16 hDriver;
|
||||
HINSTANCE16 hModule;
|
||||
CHAR szAliasName[128];
|
||||
UINT16 length;
|
||||
HDRVR16 hDriver;
|
||||
HINSTANCE16 hModule;
|
||||
CHAR szAliasName[128];
|
||||
} DRIVERINFOSTRUCT16, *LPDRIVERINFOSTRUCT16;
|
||||
|
||||
/* FIXME: Is this a WINE internal struct? */
|
||||
typedef struct tagDRIVERITEM
|
||||
{
|
||||
DRIVERINFOSTRUCT16 dis;
|
||||
WORD count;
|
||||
struct tagDRIVERITEM *lpPrevItem;
|
||||
struct tagDRIVERITEM *lpNextItem;
|
||||
DRIVERPROC16 lpDrvProc;
|
||||
} DRIVERITEM, *LPDRIVERITEM;
|
||||
|
||||
/* internal */
|
||||
typedef struct
|
||||
{
|
||||
UINT32 length;
|
||||
HDRVR32 hDriver;
|
||||
HMODULE32 hModule;
|
||||
CHAR szAliasName[128];
|
||||
} DRIVERINFOSTRUCT32A, *LPDRIVERINFOSTRUCT32A;
|
||||
|
||||
/* internal */
|
||||
typedef struct tagDRIVERITEM32A {
|
||||
DRIVERINFOSTRUCT32A dis;
|
||||
DWORD count;
|
||||
struct tagDRIVERITEM32A *next;
|
||||
DRIVERPROC32 driverproc;
|
||||
} DRIVERITEM32A,*LPDRIVERITEM32A;
|
||||
|
||||
LRESULT WINAPI DefDriverProc16(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg,
|
||||
LPARAM dwParam1, LPARAM dwParam2);
|
||||
LRESULT WINAPI DefDriverProc32(DWORD dwDriverIdentifier, HDRVR32 hdrvr,
|
||||
|
@ -107,4 +92,51 @@ HMODULE32 WINAPI GetDriverModuleHandle32(HDRVR32 hDriver);
|
|||
HDRVR16 WINAPI GetNextDriver(HDRVR16, DWORD);
|
||||
BOOL16 WINAPI GetDriverInfo(HDRVR16, DRIVERINFOSTRUCT16 *);
|
||||
|
||||
/* The following definitions are WINE internals */
|
||||
/* FIXME: This is a WINE internal struct and should be moved in include/wine directory */
|
||||
/* Please note that WINE shares 16 and 32 bit drivers on a single list... */
|
||||
/* Basically, we maintain an external double view on drivers, so that a 16 bit drivers
|
||||
* can be loaded/used... by 32 functions transparently
|
||||
*/
|
||||
typedef struct tagWINE_DRIVER
|
||||
{
|
||||
char szAliasName[128];
|
||||
/* as usual LPWINE_DRIVER == hDriver32 */
|
||||
HDRVR16 hDriver16;
|
||||
union {
|
||||
struct {
|
||||
HMODULE16 hModule;
|
||||
DRIVERPROC16 lpDrvProc;
|
||||
} d16;
|
||||
struct {
|
||||
HMODULE32 hModule;
|
||||
DRIVERPROC32 lpDrvProc;
|
||||
} d32;
|
||||
} d;
|
||||
DWORD dwDriverID;
|
||||
DWORD dwFlags;
|
||||
struct tagWINE_DRIVER* lpPrevItem;
|
||||
struct tagWINE_DRIVER* lpNextItem;
|
||||
} WINE_DRIVER, *LPWINE_DRIVER;
|
||||
|
||||
/* values for dwFlags */
|
||||
#define WINE_DI_TYPE_MASK 0x00000007ul
|
||||
#define WINE_DI_TYPE_16 0x00000001ul
|
||||
#define WINE_DI_TYPE_32 0x00000002ul
|
||||
|
||||
LPWINE_DRIVER DRIVER_RegisterDriver16(LPCSTR, HMODULE16, DRIVERPROC16, LPARAM);
|
||||
LPWINE_DRIVER DRIVER_RegisterDriver32(LPCSTR, HMODULE32, DRIVERPROC32, LPARAM);
|
||||
|
||||
#if 0
|
||||
#errro "it's never used"
|
||||
/* internal */
|
||||
typedef struct
|
||||
{
|
||||
UINT32 length;
|
||||
HDRVR32 hDriver;
|
||||
HMODULE32 hModule;
|
||||
CHAR szAliasName[128];
|
||||
} DRIVERINFOSTRUCT32A, *LPDRIVERINFOSTRUCT32A;
|
||||
#endif
|
||||
|
||||
#endif /* __WINE_DRIVER_H */
|
||||
|
|
|
@ -4,7 +4,7 @@ type win32
|
|||
1 stdcall PlaySoundA(ptr long long) PlaySound32A
|
||||
2 stdcall WINMM_2(ptr long long) PlaySound32A
|
||||
3 stub WINMM_3
|
||||
4 stub CloseDriver
|
||||
4 stdcall CloseDriver(long long long) CloseDriver32
|
||||
5 stdcall DefDriverProc(long long long long long) DefDriverProc32
|
||||
6 stub DriverCallback
|
||||
7 stub DrvClose
|
||||
|
|
988
windows/driver.c
988
windows/driver.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue