Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/********************************************************************
Copyright (c) 1999 Microsoft Corporation
Module Name: drvdefs.h
Abstract: header file containing pieces of code from msinfo codebase
Revision History:
Brijesh Krishnaswami (brijeshk) 05/25/99 - created ********************************************************************/
#ifndef _DRV16_H
#define _DRV16_H
#ifdef __cplusplus
extern "C" { #endif
// defines and structs for getting User Mode drivers
#define GND_FORWARD 0
#define GND_FIRSTINSTANCEONLY 1
#define GND_REVERSE 2
#define IOCTL_CONNECT 1
#define IOCTL_DISCONNECT 2
#define IOCTL_GETINFO 3
#define IOCTL_GETVXDLIST 4
#define IOCTL_MAPFLAT 5
#define LAR_PAGEGRAN 0x00800000 /* Is page granular */
#define LAR_32BIT 0x00400000 /* Is 32-bit */
#define LAR_PRESENT 0x00008000 /* Is present */
#define LAR_APPL 0x00004000 /* Is normal (not a task gate) ;Internal */
#define LAR_TYPEMASK 0x00000E00 /* Selector type mask */
#define LAR_CODE 0x00000800 /* Is a code selector */
#define LAR_EXPANDDOWN 0x00000400 /* Is expand-down (data) */
#define LAR_READ 0x00000200 /* Is readable (code) */
#define LAR_WRITE 0x00000200 /* Is writeable (data) */
#define LAR_INVALID 0xff0000ff /* Invalid (bottom bit important) */
// general util macros
#define cA(a) (sizeof(a)/sizeof(a[0]))
#define OBJAT(T, pv) (*(T *)(pv))
#define PUN(T, v) OBJAT(T, &(v))
#define pvAddPvCb(pv, cb) ((PVOID)((PBYTE)pv + (cb)))
typedef WORD HMODULE16;
typedef struct DRIVERINFOSTRUCT16 { WORD length; WORD hDriver; WORD hModule; char szAliasName[128]; } DRIVERINFOSTRUCT16;
// defines and structs used for getting MSDos drivers
#define DIFL_PSP 0x0001 /* It's a PSP */
#define DIFL_TSR 0x0002 /* It's a TSR (or might be) */
#define DIFL_DRV 0x0004 /* It's a device driver */
#pragma pack(1)
typedef struct ARENA { /* DOS arena header */ BYTE bType; WORD segOwner; WORD csegSize; BYTE rgbPad[3]; char rgchOwner[8]; } ARENA, *PARENA;
typedef struct VXDOUT { DWORD dwHighLinear; PVOID pvVmmDdb; } VXDOUT, *PVXDOUT;
typedef struct VXDINFO { HWND hwnd; FARPROC lpfnGetCurrentTibFS; FARPROC lpfnGetCurrentProcessId; FARPROC lpfnGetCurrentThreadId; FARPROC GetCommandLineA; FARPROC UnhandledExceptionFilter; } VXDINFO;
typedef struct RMIREGS { union { struct { /* DWORD registers */ DWORD edi; DWORD esi; DWORD ebp; DWORD res1; DWORD ebx; DWORD edx; DWORD ecx; DWORD eax; };
struct { /* WORD registers */ WORD di; WORD res2; WORD si; WORD res3; WORD bp; WORD res4; DWORD res5; WORD bx; WORD res6; WORD dx; WORD res7; WORD cx; WORD res8; WORD ax; WORD res9; };
struct { /* BYTE registers */ DWORD res10[4]; /* edi, esi, ebp, esp */ BYTE bl; BYTE bh; WORD res11; BYTE dl; BYTE dh; WORD res12; BYTE cl; BYTE ch; WORD res13; BYTE al; BYTE ah; WORD res14; }; };
WORD flags; WORD es; WORD ds; WORD fs; WORD gs; WORD ip; WORD cs; WORD sp; WORD ss; } RMIREGS, *PRMIREGS;
#pragma pack()
// 16-bit function prototypes
LPVOID WINAPI MapLS(LPVOID); void WINAPI UnMapLS(LPVOID); LPVOID NTAPI MapSL(LPVOID); void NTAPI UnMapSLFix(LPVOID pv); HMODULE16 NTAPI GetModuleHandle16(LPCSTR); int NTAPI GetModuleFileName16(HMODULE16 hmod, LPSTR sz, int cch); int NTAPI GetModuleName16(HMODULE16 hmod, LPSTR sz, int cch); WORD NTAPI GetExpWinVer16(HMODULE16 hmod); BOOL GetDriverInfo16(WORD hDriver, DRIVERINFOSTRUCT16* pdis); WORD GetNextDriver16(WORD hDriver, DWORD fdwFlag); UINT AllocCodeSelector16(void); UINT SetSelectorBase16(UINT sel, DWORD dwBase); DWORD GetSelectorLimit16(UINT sel); UINT SetSelectorLimit16(UINT sel, DWORD dwLimit); UINT FreeSelector16(UINT sel); UINT NTAPI FreeLibrary16(HINSTANCE); void _cdecl QT_Thunk(void); HINSTANCE WINAPI LoadLibrary16(LPCSTR); FARPROC WINAPI GetProcAddress16(HINSTANCE, LPCSTR); void WINAPI GetpWin16Lock(LPVOID *);
void ThunkInit(void); UINT Int86x(UINT, PRMIREGS); LPTSTR Token_Find(LPTSTR *);
#ifdef __cplusplus
} #endif
#endif
|