Leaked source code of windows server 2003
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.

578 lines
17 KiB

  1. /***MD sysdetmg.h - System Detection Manager definitions
  2. *
  3. * This module contains System Detection Manager definitions including
  4. * Detection Module Services definitions and Module Function definitions.
  5. *
  6. * Copyright (c) 1992,1993 Microsoft Corporation
  7. * Author: Michael Tsang (MikeTs)
  8. * Created 12/10/92
  9. *
  10. * MODIFICATION HISTORY
  11. */
  12. #ifndef _INC_SYSDETMG
  13. #define _INC_SYSDETMG
  14. /* do not complain about in-line comment and pragma use in windows.h */
  15. #pragma warning(disable:4001 4103 4705)
  16. #include <sdmerror.h>
  17. #ifdef CALLCM //only do this hack if we need to call CM
  18. #define WINVER 0x030a //system detection can be run under win31
  19. #include <windows.h>
  20. // Windows.h defines the following set of things for old reg users, whose
  21. // WINVER is less than 0x0400. Normally this is not a problem, but SYSDETMG
  22. // is a special DLL whose winver is 0x030a, but we really use Win4.0 reg
  23. // error codes, so we need to pick up the defines in WINERROR.H, so this
  24. // prevents macro redef warnings.
  25. #ifdef ERROR_SUCCESS
  26. #undef ERROR_SUCCESS
  27. #endif
  28. #ifdef ERROR_BADDB
  29. #undef ERROR_BADDB
  30. #endif
  31. #ifdef ERROR_BADKEY
  32. #undef ERROR_BADKEY
  33. #endif
  34. #ifdef ERROR_CANTOPEN
  35. #undef ERROR_CANTOPEN
  36. #endif
  37. #ifdef ERROR_CANTREAD
  38. #undef ERROR_CANTREAD
  39. #endif
  40. #ifdef ERROR_CANTWRITE
  41. #undef ERROR_CANTWRITE
  42. #endif
  43. #ifdef ERROR_INSUFFICIENT_MEMORY
  44. #undef ERROR_INSUFFICIENT_MEMORY
  45. #endif
  46. #ifdef ERROR_INVALID_PARAMETER
  47. #undef ERROR_INVALID_PARAMETER
  48. #endif
  49. #ifdef ERROR_ACCESS_DENIED
  50. #undef ERROR_ACCESS_DENIED
  51. #endif
  52. #ifdef HKEY_CLASSES_ROOT
  53. #undef HKEY_CLASSES_ROOT
  54. #endif
  55. #ifndef REG_BINARY
  56. #define REG_BINARY 0x0003
  57. #endif
  58. #ifndef HKEY_CURRENT_CONFIG
  59. #define HKEY_CURRENT_CONFIG ((HKEY)0x80000005)
  60. #endif
  61. #ifndef HKEY_LOCAL_MACHINE
  62. #define HKEY_LOCAL_MACHINE ((HKEY)0x80000002)
  63. #endif
  64. #else //ifdef SYSDETMG
  65. #include <windows.h>
  66. #endif
  67. #include <winerror.h>
  68. #define NOPRSHT //do not include prsht.h
  69. #include <setupx.h>
  70. /*** Miscellaneou macros
  71. */
  72. #define BYTEOF(d,i) (((BYTE *)&(d))[i])
  73. #define WORDOF(d,i) (((WORD *)&(d))[i])
  74. #define LOCAL PASCAL FAR
  75. #define LOCALC CDECL FAR
  76. #define DLLENTRY _loadds WINAPI
  77. #define DEREF(x) ((x) = (x))
  78. #define ALLOC(n) ((VOID FAR *)GlobalAllocPtr(GHND, (n)))
  79. #define FREE(p) GlobalFreePtr((p))
  80. #ifdef ERRMSG
  81. #define CATMSG(p) CatMsg p
  82. #define CATERR(rc,p) {if (rc) CatMsg p;}
  83. #else
  84. #define CATMSG(p)
  85. #define CATERR(rc,p)
  86. #endif
  87. #ifdef DEBUG
  88. #define ENTER(p) EnterProc p
  89. #define EXIT(p) ExitProc p
  90. #define PRINTTRACE(p) PrintTrace p
  91. #else
  92. #define ENTER(p)
  93. #define EXIT(p)
  94. #define PRINTTRACE(p)
  95. #endif
  96. #define CODESEG _based(_segname("_CODE"))
  97. /*** Implementation constants
  98. */
  99. #define MAX_PATHNAME_LEN 63 //max. length of path name
  100. #define MAX_CLASSNAME_LEN 15 //max. length of device class name
  101. #define MAX_FUNCNAME_LEN 31 //max. length of function name
  102. #define MAX_DEVNAME_LEN 15 //max. length of device name
  103. #define MAX_INSTNAME_LEN 15 //device instance name length
  104. #define MAX_DOSDEVNAME_LEN 8 //dos device name length
  105. #define MAX_PARAMLINE_LEN 63 //TSR parameter line length
  106. #define MAX_DESC_LEN 63 //max. description length
  107. /*** Callback function error
  108. */
  109. #define DCBERR_NONE 0x00000000 //no error
  110. #define DCBERR_SKIP 0x80000001 //skip detection function
  111. #define DCBERR_ABORT 0x80000002 //abort detection
  112. /*** Other constants
  113. */
  114. #define STR_INFNAME_MSDETINF "msdet.inf" //main detection INF name
  115. //dwfDetOpen flags
  116. #define DOF_CUSTOM 0x00000001 //custom detection
  117. #define DOF_NORISK 0x00000002 //no risk detection mode
  118. #define DOF_CLEANREG 0x00000004 //clean hw from registry
  119. #define DOF_QUIET 0x00000008 //don't show progress bar
  120. #define DOF_VERBOSE 0x00000010 //detection progress dialog
  121. #define DOF_NORECOVER 0x00000020 //no recover from last crash
  122. #define DOF_MAXCALLBACK 0x00000040 //maximum callback
  123. #define DOF_PROMPTBEFORE 0x00000080 //prompt before detect
  124. #define DOF_PROGRESSCALLBACK 0x00000100 //do progress callback
  125. #define DOF_INSETUP 0x00000200 //called by Setup
  126. #define DOF_LOGPERFORMANCE 0x00000400 //enable performance logging
  127. #define DOF_ERRORPOPUP 0x00008000 //enable error message box
  128. //dwfDetect flags
  129. #define DETF_NORISK 0x00010000 //no risk detection
  130. #define DETF_VERIFY 0x00020000 //verify mode
  131. //dwCallBackContext
  132. #define CBC_DEVDETECTED 1 //device detected
  133. #define CBC_REPORTERR 2 //report error
  134. #define CBC_QUERYRES 3 //DMSQueryIOMem has been called
  135. #define CBC_DETECTDONE 4 //detection done
  136. #define CBC_VERIFYDANGER 5 //verifying old danger entry
  137. #define CBC_NEWDANGER 6 //creating new danger entry
  138. #define CBC_DISCARDCRASH 7 //discarding a crash entry
  139. #define CBC_VERIFYDONE 8 //finish verifying devices
  140. #define CBC_BEGINVERIFY 9 //begin verify
  141. #define CBC_VERIFYPROGRESS 10 //verify progress
  142. #define CBC_BEGINDETECT 11 //begin detection
  143. #define CBC_DETECTPROGRESS 12 //detection progress
  144. #define CBC_DETECTING 13 //just above to detect a device
  145. #define CBC_DISCARDDANGER 14 //discard a danger entry
  146. #define CBC_SKIPCRASHFUNC 15 //skip a crash function
  147. #define CBC_DMSWRITELOG 16 //detection module log entry
  148. #define CBC_PERFORMANCE 17 //log detection performance data
  149. //dwfSearch flags
  150. #define MSF_REALADDR 0x00000001 //real mode address
  151. #define MSF_IGNORECASE 0x00000002 //case insensitive search
  152. //dwResType values
  153. #define RESTYPE_IO 1 //I/O resource
  154. #define RESTYPE_MEM 2 //memory resource
  155. #define RESTYPE_IRQ 3 //irq resource
  156. #define RESTYPE_DMA 4 //dma resource
  157. //Return values of DMSQueryIOMem or DMSQueryIRQDMA
  158. #define RES_NOMATCH 0 //resources have no owner
  159. #define RES_OVERLAP 1 //resources overlap with existing owner
  160. #define RES_MATCH 2 //resources match with existing owner
  161. #define RES_SHARED 3 //resources are shareable by the owner
  162. #define RES_SUPERSET 4 //resources are superset of existing owner
  163. /*** Function type definitions
  164. */
  165. typedef LONG (DLLENTRY *LPFNDET)(HDET, DWORD, DWORD);
  166. typedef LONG (FAR PASCAL _loadds *LPFNDCB)(DWORD, LPSTR, DWORD);
  167. typedef VOID (FAR PASCAL _loadds *LPFNICB)(DWORD);
  168. typedef VOID (FAR PASCAL *LPFNGEN)();
  169. typedef DWORD (FAR PASCAL _loadds *LPFNPROC)();
  170. /*** Structure and related definitions
  171. */
  172. #define HANDLE_NULL 0 //null handle
  173. typedef DWORD HDET; //detection handle
  174. typedef DWORD HDEV; //device handle
  175. typedef union _REGS FAR *LPREGS;
  176. typedef struct _SREGS FAR *LPSREGS;
  177. #define SYSENVF_EISASYSTEM 0x00000001
  178. #define SYSENVF_MCASYSTEM 0x00000002
  179. #define MACHINFO_MCABUS 0x02000000 //machine has MCA bus
  180. #define MACHINFO_EXTBIOSAREA 0x04000000 //extended BIOS area allocated
  181. #define MACHINFO_WAITEXTEVENT 0x08000000 //wait ext. event supported
  182. #define MACHINFO_INT154FCALLOUT 0x10000000 //int15/4f callout at int09
  183. #define MACHINFO_CMOSRTC 0x20000000 //CMOS/RTC installed
  184. #define MACHINFO_PIC2 0x40000000 //2nd PIC
  185. #define MACHINFO_HDDMA3 0x80000000 //hard disk BIOS using DMA3
  186. typedef struct sysenv_s
  187. {
  188. DWORD dwSDMVersion; //byte 0,1=build number
  189. //byte 2=version minor
  190. //byte 3=version major
  191. DWORD dwWinVer; //byte 0=winver minor
  192. //byte 1=winver major
  193. //byte 2=dosver minor
  194. //byte 3=dosver major
  195. DWORD dwWinFlags; //WinFlags from GetWinFlags
  196. DWORD dwMachineInfo; //byte 0=model
  197. //byte 1=sub-model
  198. //byte 2=BIOS revision
  199. //byte 3=features
  200. DWORD dwfSysEnv; //system environment flags
  201. char szDetPath[MAX_PATHNAME_LEN + 1]; //detection path string
  202. } SYSENV;
  203. typedef SYSENV *PSYSENV;
  204. typedef SYSENV FAR *LPSYSENV;
  205. typedef struct resinfo_s
  206. {
  207. int icIO; //number of I/O resource regions
  208. int ioffsetIO; //offset of I/O resource array
  209. int icMem; //number of memory resource regions
  210. int ioffsetMem; //offset of memory resource array
  211. int icIRQ; //number of IRQs
  212. int ioffsetIRQ; //offset of IRQ resource array
  213. int icDMA; //number of DMAs
  214. int ioffsetDMA; //offset of DMA resource array
  215. int icbResBuff; //resource buffer size that follows
  216. // IOMEM and/or IRQDMA array follows here
  217. } RESINFO;
  218. typedef RESINFO *PRESINFO;
  219. typedef RESINFO FAR *LPRESINFO;
  220. typedef struct ownerinfo_s
  221. {
  222. char szClassName[MAX_CLASSNAME_LEN + 1]; //owner's class name
  223. char szDevName[MAX_DEVNAME_LEN + 1]; //owner's device name
  224. HDEV hdevOwner; //owner's device handle
  225. LPRESINFO lpresinfo; //resource info.
  226. } OWNERINFO;
  227. typedef OWNERINFO *POWNERINFO;
  228. typedef OWNERINFO FAR *LPOWNERINFO;
  229. typedef struct iomem_s
  230. {
  231. DWORD dwStartAddr; //region starting address
  232. DWORD dwEndAddr; //region ending address
  233. DWORD dwDecodeMask; //decode mask (don't care aliases)
  234. DWORD dwAliasMask; //alias mask (used aliases)
  235. DWORD dwResAttr; //region attributes
  236. } IOMEM;
  237. typedef IOMEM *PIOMEM;
  238. typedef IOMEM FAR *LPIOMEM;
  239. typedef struct irqdma_s
  240. {
  241. DWORD dwResNum; //IRQ or DMA number
  242. DWORD dwResAttr; //attributes for this IRQ or DMA
  243. } IRQDMA;
  244. typedef IRQDMA *PIRQDMA;
  245. typedef IRQDMA FAR *LPIRQDMA;
  246. //dwfDev flags
  247. #define DEVF_CHARDEV 0x00000001 //lpstrDevName is a char dev name
  248. typedef struct dosdev_s
  249. {
  250. char szFileName[MAX_DOSDEVNAME_LEN + 1];//driver filename to query
  251. char szDevName[MAX_DOSDEVNAME_LEN + 1];//to hold device name
  252. WORD wfDevAttr; //to hold device attribute
  253. WORD wcUnits; //to hold number of block dev units
  254. WORD wbitIRQs; //to hold IRQ bit vector used by dev.
  255. DWORD dwDevHdrPtr; //to hold pointer to device header
  256. DWORD dwNextDevHdrPtr; //to hold pointer to next in chain
  257. } DOSDEV;
  258. typedef DOSDEV *PDOSDEV;
  259. typedef DOSDEV FAR *LPDOSDEV;
  260. typedef struct dostsr_s
  261. {
  262. char szPathName[MAX_PATH_LEN + 1]; //to hold the TSR full path name
  263. char szMCBOwner[9];
  264. WORD segTSRPSP; //to hold TSR's segment address
  265. WORD wcparaTSRSize; //to hold TSR's size in paragrahs
  266. WORD segParentPSP;
  267. WORD wbitIRQs; //to hold IRQ bit vector used by TSR
  268. char szParamLine[MAX_PARAMLINE_LEN + 1];//to hold TSR's parameter line
  269. DWORD dwNextMCBPtr; //to hold the seg addr of next MCB
  270. } DOSTSR;
  271. typedef DOSTSR *PDOSTSR;
  272. typedef DOSTSR FAR *LPDOSTSR;
  273. #define MAX_MCA_SLOTS 8
  274. /*** EISA related stuff
  275. */
  276. #define MAX_EISAID_LEN 7
  277. #define MAX_EISA_SLOTS 16
  278. #define MAX_IOCONFIGS 20
  279. #define MAX_MEMCONFIGS 9
  280. #define MAX_IRQCONFIGS 7
  281. #define MAX_DMACONFIGS 4
  282. #define IDSLOT_DUPID 0x0080
  283. #define IDSLOT_NOREADID 0x0040
  284. #define IDSLOT_SLOTTYPEMASK 0x0030
  285. #define IDSLOT_EXPANSLOT 0x0000
  286. #define IDSLOT_EMBEDSLOT 0x0010
  287. #define IDSLOT_VIRTSLOT 0x0020
  288. #define IDSLOT_DUPCFGIDMASK 0x000f
  289. #define IDSLOT_INCOMPLETECONFIG 0x8000
  290. #define IDSLOT_SUPPORTIOCHKERR 0x0200
  291. #define IDSLOT_SUPPORTENABLE 0x0100
  292. #define FUNCINFO_FUNCDISABLED 0x80
  293. #define FUNCINFO_FREEFORMDATA 0x40
  294. #define FUNCINFO_IOINITENTRIES 0x20
  295. #define FUNCINFO_IORANGEENTRIES 0x10
  296. #define FUNCINFO_DMAENTRIES 0x08
  297. #define FUNCINFO_IRQENTRIES 0x04
  298. #define FUNCINFO_MEMENTRIES 0x02
  299. #define FUNCINFO_TYPEENTRY 0x01
  300. #define PORTINFO_MOREENTRIES 0x80
  301. #define PORTINFO_SHARED 0x40
  302. #define PORTINFO_NUMPORTMASK 0x1f
  303. #define MEMCFG_MOREENTRIES 0x80
  304. #define MEMCFG_SHARED 0x20
  305. #define MEMCFG_MEMTYPEMASK 0x18
  306. #define MEMCFG_CACHED 0x02
  307. #define MEMCFG_READWRITE 0x01
  308. #define MEMSIZ_DECODEMASK 0x0c
  309. #define MEMSIZ_DECODE20BIT 0x00
  310. #define MEMSIZ_DECODE24BIT 0x04
  311. #define MEMSIZ_DECODE32BIT 0x08
  312. #define IRQCFG_MOREENTRIES 0x80
  313. #define IRQCFG_SHARED 0x40
  314. #define IRQCFG_LEVELTRIGGERED 0x20
  315. #define IRQCFG_INTNUMMASK 0x0f
  316. #define DMACFG_MOREENTRIES 0x0080
  317. #define DMACFG_SHARED 0x0040
  318. #define DMACFG_DMANUMMASK 0x0007
  319. #define DMACFG_TIMINGMASK 0x3000
  320. #define DMACFG_XFERSIZEMASK 0x0c00
  321. #pragma pack(1)
  322. typedef struct memconfig_s
  323. {
  324. BYTE bMemConfig;
  325. BYTE bMemDataSize;
  326. BYTE bStartAddrLo; //divided by 0x100
  327. WORD wStartAddrHi;
  328. WORD wMemSize; //divided by 0x400
  329. } MEMCONFIG;
  330. typedef struct ioconfig_s
  331. {
  332. BYTE bPortInfo;
  333. WORD wStartPort;
  334. } IOCONFIG;
  335. typedef struct initdata_s
  336. {
  337. BYTE bInitType;
  338. WORD wPortAddr;
  339. } INITDATA;
  340. typedef struct eisaconfig_s
  341. {
  342. DWORD dwEISAID;
  343. WORD wIDSlotInfo;
  344. BYTE bMajorRev;
  345. BYTE bMinorRev;
  346. BYTE abSelections[26];
  347. BYTE bFuncInfo;
  348. char achTypeInfo[80];
  349. MEMCONFIG amemconfig[MAX_MEMCONFIGS];
  350. WORD awIRQConfig[MAX_IRQCONFIGS];
  351. WORD awDMAConfig[MAX_DMACONFIGS];
  352. IOCONFIG aioconfig[MAX_IOCONFIGS];
  353. INITDATA ainitdata[20];
  354. } EISACONFIG;
  355. typedef EISACONFIG FAR *LPEISACONFIG;
  356. /*** DPMI call structure
  357. */
  358. typedef struct dwregs_s
  359. {
  360. DWORD edi;
  361. DWORD esi;
  362. DWORD ebp;
  363. DWORD rmdw1;
  364. DWORD ebx;
  365. DWORD edx;
  366. DWORD ecx;
  367. DWORD eax;
  368. } DWREGS;
  369. typedef struct wregs_s
  370. {
  371. WORD di;
  372. WORD rmw1;
  373. WORD si;
  374. WORD rmw2;
  375. WORD bp;
  376. WORD rmw3;
  377. DWORD rmw4;
  378. WORD bx;
  379. WORD rmw5;
  380. WORD dx;
  381. WORD rmw6;
  382. WORD cx;
  383. WORD rmw7;
  384. WORD ax;
  385. } WREGS;
  386. typedef struct bregs_s
  387. {
  388. DWORD rmb1[4];
  389. BYTE bl;
  390. BYTE bh;
  391. WORD rmb2;
  392. BYTE dl;
  393. BYTE dh;
  394. WORD rmb3;
  395. BYTE cl;
  396. BYTE ch;
  397. WORD rmb4;
  398. BYTE al;
  399. BYTE ah;
  400. } BREGS;
  401. typedef struct rmcs_s
  402. {
  403. union
  404. {
  405. DWREGS dw;
  406. WREGS w;
  407. BREGS b;
  408. } regs;
  409. WORD flags;
  410. WORD es;
  411. WORD ds;
  412. WORD fs;
  413. WORD gs;
  414. WORD ip;
  415. WORD cs;
  416. WORD sp;
  417. WORD ss;
  418. } RMCS, FAR *LPRMCS;
  419. #pragma pack()
  420. /*** SDS Services prototypes
  421. */
  422. LONG DLLENTRY SDSOpen(HWND hwnd, LPCSTR lpstrDetPath, WORD wfDetOpen,
  423. LPFNDCB lpfnCallBack, LPSTR lpstrParams);
  424. LONG DLLENTRY SDSClose(VOID);
  425. LONG DLLENTRY SDSDetect(LPSTR lpstrClass, LPSTR lpstrFunc, WORD wfDetect,
  426. DWORD dwDetParam);
  427. LONG DLLENTRY SDSRegAvoidRes(int icIO, LPIOMEM lpaio,
  428. int icMem, LPIOMEM lpamem,
  429. int icIRQ, LPIRQDMA lpairq,
  430. int icDMA, LPIRQDMA lpadma);
  431. VOID DLLENTRY SDSGetErrMsg(LONG lErr, LPSTR lpstrBuff, int icbLen);
  432. /*** DMS Services prototypes
  433. */
  434. VOID _loadds FAR CDECL CatMsg(LPCSTR lpstrFormat, ...);
  435. VOID _loadds FAR CDECL EnterProc(int iTraceLevel, LPCSTR lpstrFormat, ...);
  436. VOID _loadds FAR CDECL ExitProc(int iTraceLevel, LPCSTR lpstrFormat, ...);
  437. VOID _loadds FAR CDECL PrintTrace(int iTraceLevel, LPCSTR lpstrFormat, ...);
  438. LONG DLLENTRY DMSQueryIOMem(HDET hdet, int iResType, int icEntries,
  439. LPIOMEM lpaiomem, LPOWNERINFO lpownerinfo);
  440. LONG DLLENTRY DMSQueryIRQDMA(HDET hdet, int iResType, int icEntries,
  441. LPIRQDMA lpairqdma, LPOWNERINFO lpownerinfo);
  442. LONG DLLENTRY DMSRegHW(HDET hdet, LPSTR lpstrHWName,
  443. HKEY FAR *lphkHW, HINF FAR *lphinfHW,
  444. int icIO, LPIOMEM lpaio,
  445. int icMem, LPIOMEM lpamem,
  446. int icIRQ, LPIRQDMA lpairq,
  447. int icDMA, LPIRQDMA lpadma,
  448. WORD wfRegHW);
  449. int DLLENTRY DMSInp(unsigned uPort);
  450. unsigned DLLENTRY DMSInpw(unsigned uPort);
  451. DWORD DLLENTRY DMSInpdw(unsigned uPort);
  452. int DLLENTRY DMSOutp(unsigned uPort, int iData);
  453. unsigned DLLENTRY DMSOutpw(unsigned uPort, unsigned uData);
  454. DWORD DLLENTRY DMSOutpdw(unsigned uPort, DWORD dwData);
  455. int DLLENTRY DMSDetectIRQ(unsigned uIRQMask, LPFNICB lpfnIntOn,
  456. LPFNICB lpfnIntOff, DWORD dwParam);
  457. BOOL DLLENTRY DMSTimeout(DWORD dwcTicks);
  458. VOID DLLENTRY DMSDelayTicks(DWORD dwcTicks);
  459. LPBYTE DLLENTRY DMSGetMemAlias(DWORD dwRealMemAddr, DWORD dwcbSize);
  460. VOID DLLENTRY DMSFreeMemAlias(LPBYTE lpbMemAlias);
  461. LPBYTE DLLENTRY DMSFindMemStr(LPBYTE lpbAddr, DWORD dwcbSize, LPCSTR lpstr,
  462. WORD wfSearch);
  463. LONG DLLENTRY DMSQueryDosDev(DWORD dwDevHdrPtr, LPCSTR lpstrDevName,
  464. WORD wfDev, LPDOSDEV lpdosdev);
  465. LONG DLLENTRY DMSQueryDosTSR(DWORD dwMCBPtr, LPSTR lpstrTSRName,
  466. LPDOSTSR lpdostsr);
  467. VOID DLLENTRY DMSQuerySysEnv(LPSYSENV lpsysenv);
  468. LONG DLLENTRY DMSGetIHVEISADevSlots(LPCSTR lpstrIHVID);
  469. LONG DLLENTRY DMSGetSlotEISAID(int iSlot, LPSTR lpstrDevID);
  470. LONG DLLENTRY DMSGetEISAFuncConfig(int iSlot, int iFunc,
  471. LPEISACONFIG lpcfg, LPSTR lpstrEISAID);
  472. BOOL DLLENTRY DMSGetEISACardConfig(int iSlot, LPSTR lpstrDevID,
  473. int FAR *lpicIO, LPIOMEM lpaio,
  474. int FAR *lpicMem, LPIOMEM lpamem,
  475. int FAR *lpicIRQ, LPIRQDMA lpairq,
  476. int FAR *lpicDMA, LPIRQDMA lpadma,
  477. WORD wcbTypeBuff, LPSTR lpstrTypeBuff);
  478. LONG DLLENTRY DMSGetMCADevSlots(WORD wMCAID);
  479. LONG DLLENTRY DMSGetSlotMCAID(int iSlot);
  480. int DLLENTRY DMSInt86x(int iIntNum, LPREGS lpregsIn, LPREGS lpregsOut,
  481. LPSREGS lpsregs);
  482. BOOL DLLENTRY DMSQueryVerifyState(HDET hdet);
  483. LPSTR DLLENTRY DMSCatPath(LPSTR lpstrPath, LPSTR lpstrName);
  484. LPSTR DLLENTRY DMSGetWinDir(LPSTR lpstrWinDir, int icbBuffLen);
  485. LPFNPROC DLLENTRY DMSRegRing0Proc(LPFNPROC lpfnR3Proc, int icwArg);
  486. VOID DLLENTRY DMSFreeRing0Proc(LPFNPROC lpfnR0Proc);
  487. LONG DLLENTRY DMSWriteLog(LPSTR lpstrMsg);
  488. /*** Module function error codes
  489. */
  490. #define MODERR_NONE 0L //no error
  491. #define MODERR_SDMERR 0x80008001 //sysdetmg error
  492. #define MODERR_REGERR 0x80008002 //cannot access registry
  493. #define MODERR_UNRECOVERABLE 0x80000003 //unrecoverable error
  494. #endif //_INC_SYSDETMG