jwadbt.pas 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694
  1. {******************************************************************************}
  2. { }
  3. { Equates for WM_DEVICECHANGE and BroadcastSystemMessage for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: dbt.h, released June 2000. The original Pascal }
  9. { code is: Dbt.pas, released December 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. // $Id: JwaDbt.pas,v 1.10 2007/09/06 14:57:11 marquardt Exp $
  43. {$IFNDEF JWA_OMIT_SECTIONS}
  44. unit JwaDbt;
  45. {$WEAKPACKAGEUNIT}
  46. {$ENDIF JWA_OMIT_SECTIONS}
  47. {$HPPEMIT ''}
  48. {$HPPEMIT '#include "dbt.h"'}
  49. {$HPPEMIT ''}
  50. {$IFNDEF JWA_OMIT_SECTIONS}
  51. {$I jediapilib.inc}
  52. interface
  53. uses
  54. JwaWinType, JwaWinUser;
  55. {$ENDIF JWA_OMIT_SECTIONS}
  56. {$IFNDEF JWA_IMPLEMENTATIONSECTION}
  57. //
  58. // BroadcastSpecialMessage constants.
  59. //
  60. const
  61. {$IFNDEF JWA_INCLUDEMODE}
  62. WM_DEVICECHANGE = $0219;
  63. {$EXTERNALSYM WM_DEVICECHANGE}
  64. (*
  65. * Broadcast message and receipient flags.
  66. *
  67. * Note that there is a third "flag". If the wParam has:
  68. *
  69. * bit 15 on: lparam is a pointer and bit 14 is meaningfull.
  70. * bit 15 off: lparam is just a UNLONG data type.
  71. *
  72. * bit 14 on: lparam is a pointer to an ASCIIZ string.
  73. * bit 14 off: lparam is a pointer to a binary struture starting with
  74. * a dword describing the length of the structure.
  75. *)
  76. BSF_QUERY = $00000001;
  77. {$EXTERNALSYM BSF_QUERY}
  78. BSF_IGNORECURRENTTASK = $00000002; // Meaningless for VxDs
  79. {$EXTERNALSYM BSF_IGNORECURRENTTASK}
  80. BSF_FLUSHDISK = $00000004; // Shouldn't be used by VxDs
  81. {$EXTERNALSYM BSF_FLUSHDISK}
  82. BSF_NOHANG = $00000008;
  83. {$EXTERNALSYM BSF_NOHANG}
  84. BSF_POSTMESSAGE = $00000010;
  85. {$EXTERNALSYM BSF_POSTMESSAGE}
  86. BSF_FORCEIFHUNG = $00000020;
  87. {$EXTERNALSYM BSF_FORCEIFHUNG}
  88. BSF_NOTIMEOUTIFNOTHUNG = $00000040;
  89. {$EXTERNALSYM BSF_NOTIMEOUTIFNOTHUNG}
  90. {$ENDIF JWA_INCLUDEMODE}
  91. BSF_MSGSRV32ISOK = $80000000; // Called synchronously from PM API
  92. {$EXTERNALSYM BSF_MSGSRV32ISOK}
  93. BSF_MSGSRV32ISOK_BIT = 31; // Called synchronously from PM API
  94. {$EXTERNALSYM BSF_MSGSRV32ISOK_BIT}
  95. {$IFNDEF JWA_INCLUDEMODE}
  96. BSM_ALLCOMPONENTS = $00000000;
  97. {$EXTERNALSYM BSM_ALLCOMPONENTS}
  98. BSM_VXDS = $00000001;
  99. {$EXTERNALSYM BSM_VXDS}
  100. BSM_NETDRIVER = $00000002;
  101. {$EXTERNALSYM BSM_NETDRIVER}
  102. BSM_INSTALLABLEDRIVERS = $00000004;
  103. {$EXTERNALSYM BSM_INSTALLABLEDRIVERS}
  104. BSM_APPLICATIONS = $00000008;
  105. {$EXTERNALSYM BSM_APPLICATIONS}
  106. {$ENDIF JWA_INCLUDEMODE}
  107. (*
  108. * Message = WM_DEVICECHANGE
  109. * wParam = DBT_APPYBEGIN
  110. * lParam = (not used)
  111. *
  112. * 'Appy-time is now available. This message is itself sent
  113. * at 'Appy-time.
  114. *
  115. * Message = WM_DEVICECHANGE
  116. * wParam = DBT_APPYEND
  117. * lParam = (not used)
  118. *
  119. * 'Appy-time is no longer available. This message is *NOT* sent
  120. * at 'Appy-time. (It cannot be, because 'Appy-time is gone.)
  121. *
  122. * NOTE! It is possible for DBT_APPYBEGIN and DBT_APPYEND to be sent
  123. * multiple times during a single Windows session. Each appearance of
  124. * 'Appy-time is bracketed by these two messages, but 'Appy-time may
  125. * momentarily become unavailable during otherwise normal Windows
  126. * processing. The current status of 'Appy-time availability can always
  127. * be obtained from a call to _SHELL_QueryAppyTimeAvailable.
  128. *)
  129. DBT_APPYBEGIN = $0000;
  130. {$EXTERNALSYM DBT_APPYBEGIN}
  131. DBT_APPYEND = $0001;
  132. {$EXTERNALSYM DBT_APPYEND}
  133. (*
  134. * Message = WM_DEVICECHANGE
  135. * wParam = DBT_DEVNODES_CHANGED
  136. * lParam = 0
  137. *
  138. * send when configmg finished a process tree batch. Some devnodes
  139. * may have been added or removed. This is used by ring3 people which
  140. * need to be refreshed whenever any devnode changed occur (like
  141. * device manager). People specific to certain devices should use
  142. * DBT_DEVICE* instead.
  143. *)
  144. DBT_DEVNODES_CHANGED = $0007;
  145. {$EXTERNALSYM DBT_DEVNODES_CHANGED}
  146. (*
  147. * Message = WM_DEVICECHANGE
  148. * wParam = DBT_QUERYCHANGECONFIG
  149. * lParam = 0
  150. *
  151. * sent to ask if a config change is allowed
  152. *)
  153. DBT_QUERYCHANGECONFIG = $0017;
  154. {$EXTERNALSYM DBT_QUERYCHANGECONFIG}
  155. (*
  156. * Message = WM_DEVICECHANGE
  157. * wParam = DBT_CONFIGCHANGED
  158. * lParam = 0
  159. *
  160. * sent when a config has changed
  161. *)
  162. DBT_CONFIGCHANGED = $0018;
  163. {$EXTERNALSYM DBT_CONFIGCHANGED}
  164. (*
  165. * Message = WM_DEVICECHANGE
  166. * wParam = DBT_CONFIGCHANGECANCELED
  167. * lParam = 0
  168. *
  169. * someone cancelled the config change
  170. *)
  171. DBT_CONFIGCHANGECANCELED = $0019;
  172. {$EXTERNALSYM DBT_CONFIGCHANGECANCELED}
  173. (*
  174. * Message = WM_DEVICECHANGE
  175. * wParam = DBT_MONITORCHANGE
  176. * lParam = new resolution to use (LOWORD=x, HIWORD=y)
  177. * if 0, use the default res for current config
  178. *
  179. * this message is sent when the display monitor has changed
  180. * and the system should change the display mode to match it.
  181. *)
  182. DBT_MONITORCHANGE = $001B;
  183. {$EXTERNALSYM DBT_MONITORCHANGE}
  184. (*
  185. * Message = WM_DEVICECHANGE
  186. * wParam = DBT_SHELLLOGGEDON
  187. * lParam = 0
  188. *
  189. * The shell has finished login on: VxD can now do Shell_EXEC.
  190. *)
  191. DBT_SHELLLOGGEDON = $0020;
  192. {$EXTERNALSYM DBT_SHELLLOGGEDON}
  193. (*
  194. * Message = WM_DEVICECHANGE
  195. * wParam = DBT_CONFIGMGAPI
  196. * lParam = CONFIGMG API Packet
  197. *
  198. * CONFIGMG ring 3 call.
  199. *)
  200. DBT_CONFIGMGAPI32 = $0022;
  201. {$EXTERNALSYM DBT_CONFIGMGAPI32}
  202. (*
  203. * Message = WM_DEVICECHANGE
  204. * wParam = DBT_VXDINITCOMPLETE
  205. * lParam = 0
  206. *
  207. * CONFIGMG ring 3 call.
  208. *)
  209. DBT_VXDINITCOMPLETE = $0023;
  210. {$EXTERNALSYM DBT_VXDINITCOMPLETE}
  211. (*
  212. * Message = WM_DEVICECHANGE
  213. * wParam = DBT_VOLLOCK*
  214. * lParam = pointer to VolLockBroadcast structure described below
  215. *
  216. * Messages issued by IFSMGR for volume locking purposes on WM_DEVICECHANGE.
  217. * All these messages pass a pointer to a struct which has no pointers.
  218. *)
  219. DBT_VOLLOCKQUERYLOCK = $8041;
  220. {$EXTERNALSYM DBT_VOLLOCKQUERYLOCK}
  221. DBT_VOLLOCKLOCKTAKEN = $8042;
  222. {$EXTERNALSYM DBT_VOLLOCKLOCKTAKEN}
  223. DBT_VOLLOCKLOCKFAILED = $8043;
  224. {$EXTERNALSYM DBT_VOLLOCKLOCKFAILED}
  225. DBT_VOLLOCKQUERYUNLOCK = $8044;
  226. {$EXTERNALSYM DBT_VOLLOCKQUERYUNLOCK}
  227. DBT_VOLLOCKLOCKRELEASED = $8045;
  228. {$EXTERNALSYM DBT_VOLLOCKLOCKRELEASED}
  229. DBT_VOLLOCKUNLOCKFAILED = $8046;
  230. {$EXTERNALSYM DBT_VOLLOCKUNLOCKFAILED}
  231. (*
  232. * Device broadcast header
  233. *)
  234. type
  235. _DEV_BROADCAST_HDR = record
  236. dbch_size: DWORD;
  237. dbch_devicetype: DWORD;
  238. dbch_reserved: DWORD;
  239. end;
  240. {$EXTERNALSYM _DEV_BROADCAST_HDR}
  241. DEV_BROADCAST_HDR = _DEV_BROADCAST_HDR;
  242. {$EXTERNALSYM DEV_BROADCAST_HDR}
  243. PDEV_BROADCAST_HDR = ^DEV_BROADCAST_HDR;
  244. {$EXTERNALSYM PDEV_BROADCAST_HDR}
  245. TDevBroadcastHdr = DEV_BROADCAST_HDR;
  246. PDevBroadcastHdr = PDEV_BROADCAST_HDR;
  247. (*
  248. * Structure for volume lock broadcast
  249. *)
  250. VolLockBroadcast = record
  251. vlb_dbh: DEV_BROADCAST_HDR;
  252. vlb_owner: DWORD; // thread on which lock request is being issued
  253. vlb_perms: BYTE; // lock permission flags defined below
  254. vlb_lockType: BYTE; // type of lock
  255. vlb_drive: BYTE; // drive on which lock is issued
  256. vlb_flags: BYTE; // miscellaneous flags
  257. end;
  258. {$EXTERNALSYM VolLockBroadcast}
  259. TVollockbroadcast = VolLockBroadcast;
  260. PVollockbroadcast = ^VolLockBroadcast;
  261. (*
  262. * Values for vlb_perms
  263. *)
  264. const
  265. LOCKP_ALLOW_WRITES = $01; // Bit 0 set - allow writes
  266. {$EXTERNALSYM LOCKP_ALLOW_WRITES}
  267. LOCKP_FAIL_WRITES = $00; // Bit 0 clear - fail writes
  268. {$EXTERNALSYM LOCKP_FAIL_WRITES}
  269. LOCKP_FAIL_MEM_MAPPING = $02; // Bit 1 set - fail memory mappings
  270. {$EXTERNALSYM LOCKP_FAIL_MEM_MAPPING}
  271. LOCKP_ALLOW_MEM_MAPPING = $00; // Bit 1 clear - allow memory mappings
  272. {$EXTERNALSYM LOCKP_ALLOW_MEM_MAPPING}
  273. LOCKP_USER_MASK = $03; // Mask for user lock flags
  274. {$EXTERNALSYM LOCKP_USER_MASK}
  275. LOCKP_LOCK_FOR_FORMAT = $04; // Level 0 lock for format
  276. {$EXTERNALSYM LOCKP_LOCK_FOR_FORMAT}
  277. (*
  278. * Values for vlb_flags
  279. *)
  280. LOCKF_LOGICAL_LOCK = $00; // Bit 0 clear - logical lock
  281. {$EXTERNALSYM LOCKF_LOGICAL_LOCK}
  282. LOCKF_PHYSICAL_LOCK = $01; // Bit 0 set - physical lock
  283. {$EXTERNALSYM LOCKF_PHYSICAL_LOCK}
  284. (*
  285. * Message = WM_DEVICECHANGE
  286. * wParam = DBT_NODISKSPACE
  287. * lParam = drive number of drive that is out of disk space (1-based)
  288. *
  289. * Message issued by IFS manager when it detects that a drive is run out of
  290. * free space.
  291. *)
  292. DBT_NO_DISK_SPACE = $0047;
  293. {$EXTERNALSYM DBT_NO_DISK_SPACE}
  294. (*
  295. * Message = WM_DEVICECHANGE
  296. * wParam = DBT_LOW_DISK_SPACE
  297. * lParam = drive number of drive that is low on disk space (1-based)
  298. *
  299. * Message issued by VFAT when it detects that a drive it has mounted
  300. * has the remaning free space below a threshold specified by the
  301. * registry or by a disk space management application.
  302. * The broadcast is issued by VFAT ONLY when space is either allocated
  303. * or freed by VFAT.
  304. *)
  305. DBT_LOW_DISK_SPACE = $0048;
  306. {$EXTERNALSYM DBT_LOW_DISK_SPACE}
  307. DBT_CONFIGMGPRIVATE = $7FFF;
  308. {$EXTERNALSYM DBT_CONFIGMGPRIVATE}
  309. (*
  310. * The following messages are for WM_DEVICECHANGE. The immediate list
  311. * is for the wParam. ALL THESE MESSAGES PASS A POINTER TO A STRUCT
  312. * STARTING WITH A DWORD SIZE AND HAVING NO POINTER IN THE STRUCT.
  313. *
  314. *)
  315. DBT_DEVICEARRIVAL = $8000; // system detected a new device
  316. {$EXTERNALSYM DBT_DEVICEARRIVAL}
  317. DBT_DEVICEQUERYREMOVE = $8001; // wants to remove, may fail
  318. {$EXTERNALSYM DBT_DEVICEQUERYREMOVE}
  319. DBT_DEVICEQUERYREMOVEFAILED = $8002; // removal aborted
  320. {$EXTERNALSYM DBT_DEVICEQUERYREMOVEFAILED}
  321. DBT_DEVICEREMOVEPENDING = $8003; // about to remove, still avail.
  322. {$EXTERNALSYM DBT_DEVICEREMOVEPENDING}
  323. DBT_DEVICEREMOVECOMPLETE = $8004; // device is gone
  324. {$EXTERNALSYM DBT_DEVICEREMOVECOMPLETE}
  325. DBT_DEVICETYPESPECIFIC = $8005; // type specific event
  326. {$EXTERNALSYM DBT_DEVICETYPESPECIFIC}
  327. DBT_CUSTOMEVENT = $8006; // user-defined event
  328. {$EXTERNALSYM DBT_CUSTOMEVENT}
  329. DBT_DEVTYP_OEM = $00000000; // oem-defined device type
  330. {$EXTERNALSYM DBT_DEVTYP_OEM}
  331. DBT_DEVTYP_DEVNODE = $00000001; // devnode number
  332. {$EXTERNALSYM DBT_DEVTYP_DEVNODE}
  333. DBT_DEVTYP_VOLUME = $00000002; // logical volume
  334. {$EXTERNALSYM DBT_DEVTYP_VOLUME}
  335. DBT_DEVTYP_PORT = $00000003; // serial, parallel
  336. {$EXTERNALSYM DBT_DEVTYP_PORT}
  337. DBT_DEVTYP_NET = $00000004; // network resource
  338. {$EXTERNALSYM DBT_DEVTYP_NET}
  339. DBT_DEVTYP_DEVICEINTERFACE = $00000005; // device interface class
  340. {$EXTERNALSYM DBT_DEVTYP_DEVICEINTERFACE}
  341. DBT_DEVTYP_HANDLE = $00000006; // file system handle
  342. {$EXTERNALSYM DBT_DEVTYP_HANDLE}
  343. type
  344. _DEV_BROADCAST_HEADER = record
  345. dbcd_size: DWORD;
  346. dbcd_devicetype: DWORD;
  347. dbcd_reserved: DWORD;
  348. end;
  349. {$EXTERNALSYM _DEV_BROADCAST_HEADER}
  350. TDevBroadcastHeader = _DEV_BROADCAST_HEADER;
  351. PDevBroadcastHeader = ^_DEV_BROADCAST_HEADER;
  352. PDEV_BROADCAST_OEM = ^DEV_BROADCAST_OEM;
  353. {$EXTERNALSYM PDEV_BROADCAST_OEM}
  354. _DEV_BROADCAST_OEM = record
  355. dbco_size: DWORD;
  356. dbco_devicetype: DWORD;
  357. dbco_reserved: DWORD;
  358. dbco_identifier: DWORD;
  359. dbco_suppfunc: DWORD;
  360. end;
  361. {$EXTERNALSYM _DEV_BROADCAST_OEM}
  362. DEV_BROADCAST_OEM = _DEV_BROADCAST_OEM;
  363. {$EXTERNALSYM DEV_BROADCAST_OEM}
  364. TDevBroadcastOem = DEV_BROADCAST_OEM;
  365. PDevBroadcastOem = PDEV_BROADCAST_OEM;
  366. PDEV_BROADCAST_DEVNODE = ^DEV_BROADCAST_DEVNODE;
  367. {$EXTERNALSYM PDEV_BROADCAST_DEVNODE}
  368. _DEV_BROADCAST_DEVNODE = record
  369. dbcd_size: DWORD;
  370. dbcd_devicetype: DWORD;
  371. dbcd_reserved: DWORD;
  372. dbcd_devnode: DWORD;
  373. end;
  374. {$EXTERNALSYM _DEV_BROADCAST_DEVNODE}
  375. DEV_BROADCAST_DEVNODE = _DEV_BROADCAST_DEVNODE;
  376. {$EXTERNALSYM DEV_BROADCAST_DEVNODE}
  377. TDevBroadcastDevNode = DEV_BROADCAST_DEVNODE;
  378. PDevBroadcastDevNode = PDEV_BROADCAST_DEVNODE;
  379. PDEV_BROADCAST_VOLUME = ^DEV_BROADCAST_VOLUME;
  380. {$EXTERNALSYM PDEV_BROADCAST_VOLUME}
  381. _DEV_BROADCAST_VOLUME = record
  382. dbcv_size: DWORD;
  383. dbcv_devicetype: DWORD;
  384. dbcv_reserved: DWORD;
  385. dbcv_unitmask: DWORD;
  386. dbcv_flags: WORD;
  387. end;
  388. {$EXTERNALSYM _DEV_BROADCAST_VOLUME}
  389. DEV_BROADCAST_VOLUME = _DEV_BROADCAST_VOLUME;
  390. {$EXTERNALSYM DEV_BROADCAST_VOLUME}
  391. TDevBroadcastVolume = DEV_BROADCAST_VOLUME;
  392. PDevBroadcastVolume = PDEV_BROADCAST_VOLUME;
  393. const
  394. DBTF_MEDIA = $0001; // media comings and goings
  395. {$EXTERNALSYM DBTF_MEDIA}
  396. DBTF_NET = $0002; // network volume
  397. {$EXTERNALSYM DBTF_NET}
  398. type
  399. PDEV_BROADCAST_PORT_A = ^DEV_BROADCAST_PORT_A;
  400. {$EXTERNALSYM PDEV_BROADCAST_PORT_A}
  401. _DEV_BROADCAST_PORT_A = record
  402. dbcp_size: DWORD;
  403. dbcp_devicetype: DWORD;
  404. dbcp_reserved: DWORD;
  405. dbcp_name: array [0..0] of Char;
  406. end;
  407. {$EXTERNALSYM _DEV_BROADCAST_PORT_A}
  408. DEV_BROADCAST_PORT_A = _DEV_BROADCAST_PORT_A;
  409. {$EXTERNALSYM DEV_BROADCAST_PORT_A}
  410. TDevBroadcastPortA = DEV_BROADCAST_PORT_A;
  411. PDevBroadcastPortA = PDEV_BROADCAST_PORT_A;
  412. PDEV_BROADCAST_PORT_W = ^DEV_BROADCAST_PORT_W;
  413. {$EXTERNALSYM PDEV_BROADCAST_PORT_W}
  414. _DEV_BROADCAST_PORT_W = record
  415. dbcp_size: DWORD;
  416. dbcp_devicetype: DWORD;
  417. dbcp_reserved: DWORD;
  418. dbcp_name: array [0..0] of WideChar;
  419. end;
  420. {$EXTERNALSYM _DEV_BROADCAST_PORT_W}
  421. DEV_BROADCAST_PORT_W = _DEV_BROADCAST_PORT_W;
  422. {$EXTERNALSYM DEV_BROADCAST_PORT_W}
  423. TDevBroadcastPortW = DEV_BROADCAST_PORT_W;
  424. PDevBroadcastPortW = PDEV_BROADCAST_PORT_W;
  425. {$IFDEF UNICODE}
  426. DEV_BROADCAST_PORT = DEV_BROADCAST_PORT_W;
  427. {$EXTERNALSYM DEV_BROADCAST_PORT}
  428. PDEV_BROADCAST_PORT = PDEV_BROADCAST_PORT_W;
  429. {$EXTERNALSYM PDEV_BROADCAST_PORT}
  430. TDevBroadcastPort = TDevBroadcastPortW;
  431. PDevBroadcastPort = PDevBroadcastPortW;
  432. {$ELSE}
  433. DEV_BROADCAST_PORT = DEV_BROADCAST_PORT_A;
  434. {$EXTERNALSYM DEV_BROADCAST_PORT}
  435. PDEV_BROADCAST_PORT = PDEV_BROADCAST_PORT_A;
  436. {$EXTERNALSYM PDEV_BROADCAST_PORT}
  437. TDevBroadcastPort = TDevBroadcastPortA;
  438. PDevBroadcastPort = PDevBroadcastPortA;
  439. {$ENDIF UNICODE}
  440. PDEV_BROADCAST_NET = ^DEV_BROADCAST_NET;
  441. {$EXTERNALSYM PDEV_BROADCAST_NET}
  442. _DEV_BROADCAST_NET = record
  443. dbcn_size: DWORD;
  444. dbcn_devicetype: DWORD;
  445. dbcn_reserved: DWORD;
  446. dbcn_resource: DWORD;
  447. dbcn_flags: DWORD;
  448. end;
  449. {$EXTERNALSYM _DEV_BROADCAST_NET}
  450. DEV_BROADCAST_NET = _DEV_BROADCAST_NET;
  451. {$EXTERNALSYM DEV_BROADCAST_NET}
  452. TDevBroadcastNet = DEV_BROADCAST_NET;
  453. PDevBroadcastNet = PDEV_BROADCAST_NET;
  454. PDEV_BROADCAST_DEVICEINTERFACE_A = ^DEV_BROADCAST_DEVICEINTERFACE_A;
  455. {$EXTERNALSYM PDEV_BROADCAST_DEVICEINTERFACE_A}
  456. _DEV_BROADCAST_DEVICEINTERFACE_A = record
  457. dbcc_size: DWORD;
  458. dbcc_devicetype: DWORD;
  459. dbcc_reserved: DWORD;
  460. dbcc_classguid: GUID;
  461. dbcc_name: array [0..0] of char;
  462. end;
  463. {$EXTERNALSYM _DEV_BROADCAST_DEVICEINTERFACE_A}
  464. DEV_BROADCAST_DEVICEINTERFACE_A = _DEV_BROADCAST_DEVICEINTERFACE_A;
  465. {$EXTERNALSYM DEV_BROADCAST_DEVICEINTERFACE_A}
  466. TDevBroadcastDeviceInterfaceA = DEV_BROADCAST_DEVICEINTERFACE_A;
  467. PDevBroadcastDeviceInterfaceA = PDEV_BROADCAST_DEVICEINTERFACE_A;
  468. PDEV_BROADCAST_DEVICEINTERFACE_W = ^DEV_BROADCAST_DEVICEINTERFACE_W;
  469. {$EXTERNALSYM PDEV_BROADCAST_DEVICEINTERFACE_W}
  470. _DEV_BROADCAST_DEVICEINTERFACE_W = record
  471. dbcc_size: DWORD;
  472. dbcc_devicetype: DWORD;
  473. dbcc_reserved: DWORD;
  474. dbcc_classguid: GUID;
  475. dbcc_name: array [0..0] of wchar_t;
  476. end;
  477. {$EXTERNALSYM _DEV_BROADCAST_DEVICEINTERFACE_W}
  478. DEV_BROADCAST_DEVICEINTERFACE_W = _DEV_BROADCAST_DEVICEINTERFACE_W;
  479. {$EXTERNALSYM DEV_BROADCAST_DEVICEINTERFACE_W}
  480. TDevBroadcastDeviceInterfaceW = DEV_BROADCAST_DEVICEINTERFACE_W;
  481. PDevBroadcastDeviceInterfaceW = PDEV_BROADCAST_DEVICEINTERFACE_W;
  482. {$IFDEF UNICODE}
  483. DEV_BROADCAST_DEVICEINTERFACE = DEV_BROADCAST_DEVICEINTERFACE_W;
  484. {$EXTERNALSYM DEV_BROADCAST_DEVICEINTERFACE}
  485. PDEV_BROADCAST_DEVICEINTERFACE = PDEV_BROADCAST_DEVICEINTERFACE_W;
  486. {$EXTERNALSYM PDEV_BROADCAST_DEVICEINTERFACE}
  487. TDevBroadcastDeviceInterface = TDevBroadcastDeviceInterfaceW;
  488. PDevBroadcastDeviceInterface = PDevBroadcastDeviceInterfaceW;
  489. {$ELSE}
  490. DEV_BROADCAST_DEVICEINTERFACE = DEV_BROADCAST_DEVICEINTERFACE_A;
  491. {$EXTERNALSYM DEV_BROADCAST_DEVICEINTERFACE}
  492. PDEV_BROADCAST_DEVICEINTERFACE = PDEV_BROADCAST_DEVICEINTERFACE_A;
  493. {$EXTERNALSYM PDEV_BROADCAST_DEVICEINTERFACE}
  494. TDevBroadcastDeviceInterface = TDevBroadcastDeviceInterfaceA;
  495. PDevBroadcastDeviceInterface = PDevBroadcastDeviceInterfaceA;
  496. {$ENDIF UNICODE}
  497. PDEV_BROADCAST_HANDLE = ^DEV_BROADCAST_HANDLE;
  498. {$EXTERNALSYM PDEV_BROADCAST_HANDLE}
  499. _DEV_BROADCAST_HANDLE = record
  500. dbch_size: DWORD;
  501. dbch_devicetype: DWORD;
  502. dbch_reserved: DWORD;
  503. dbch_handle: HANDLE; // file handle used in call to RegisterDeviceNotification
  504. dbch_hdevnotify: HDEVNOTIFY; // returned from RegisterDeviceNotification
  505. //
  506. // The following 3 fields are only valid if wParam is DBT_CUSTOMEVENT.
  507. //
  508. dbch_eventguid: GUID;
  509. dbch_nameoffset: LONG; // offset (bytes) of variable-length string buffer (-1 if none)
  510. dbch_data: array [0..0] of BYTE; // variable-sized buffer, potentially containing binary and/or text data
  511. end;
  512. {$EXTERNALSYM _DEV_BROADCAST_HANDLE}
  513. DEV_BROADCAST_HANDLE = _DEV_BROADCAST_HANDLE;
  514. {$EXTERNALSYM DEV_BROADCAST_HANDLE}
  515. TDevBroadcastHandle = DEV_BROADCAST_HANDLE;
  516. PDevBroadcastHandle = PDEV_BROADCAST_HANDLE;
  517. //
  518. // Define 32-bit and 64-bit versions of the DEV_BROADCAST_HANDLE structure
  519. // for WOW64. These must be kept in sync with the above structure.
  520. //
  521. PDEV_BROADCAST_HANDLE32 = ^DEV_BROADCAST_HANDLE32;
  522. {$EXTERNALSYM PDEV_BROADCAST_HANDLE32}
  523. _DEV_BROADCAST_HANDLE32 = record
  524. dbch_size: DWORD;
  525. dbch_devicetype: DWORD;
  526. dbch_reserved: DWORD;
  527. dbch_handle: ULONG32;
  528. dbch_hdevnotify: ULONG32;
  529. dbch_eventguid: GUID;
  530. dbch_nameoffset: LONG;
  531. dbch_data: array [0..0] of BYTE;
  532. end;
  533. {$EXTERNALSYM _DEV_BROADCAST_HANDLE32}
  534. DEV_BROADCAST_HANDLE32 = _DEV_BROADCAST_HANDLE32;
  535. {$EXTERNALSYM DEV_BROADCAST_HANDLE32}
  536. TDevBroadcastHandle32 = DEV_BROADCAST_HANDLE32;
  537. PDevBroadcastHandle32 = PDEV_BROADCAST_HANDLE32;
  538. PDEV_BROADCAST_HANDLE64 = ^DEV_BROADCAST_HANDLE64;
  539. {$EXTERNALSYM PDEV_BROADCAST_HANDLE64}
  540. _DEV_BROADCAST_HANDLE64 = record
  541. dbch_size: DWORD;
  542. dbch_devicetype: DWORD;
  543. dbch_reserved: DWORD;
  544. dbch_handle: ULONG64;
  545. dbch_hdevnotify: ULONG64;
  546. dbch_eventguid: GUID;
  547. dbch_nameoffset: LONG;
  548. dbch_data: array [0..0] of BYTE;
  549. end;
  550. {$EXTERNALSYM _DEV_BROADCAST_HANDLE64}
  551. DEV_BROADCAST_HANDLE64 = _DEV_BROADCAST_HANDLE64;
  552. {$EXTERNALSYM DEV_BROADCAST_HANDLE64}
  553. TDevBroadcastHandle64 = DEV_BROADCAST_HANDLE64;
  554. PDevBroadcastHandle64 = PDEV_BROADCAST_HANDLE64;
  555. const
  556. DBTF_RESOURCE = $00000001; // network resource
  557. {$EXTERNALSYM DBTF_RESOURCE}
  558. DBTF_XPORT = $00000002; // new transport coming or going
  559. {$EXTERNALSYM DBTF_XPORT}
  560. DBTF_SLOWNET = $00000004; // new incoming transport is slow
  561. {$EXTERNALSYM DBTF_SLOWNET}
  562. // (dbcn_resource undefined for now)
  563. DBT_VPOWERDAPI = $8100; // VPOWERD API for Win95
  564. {$EXTERNALSYM DBT_VPOWERDAPI}
  565. (*
  566. * User-defined message types all use wParam = 0xFFFF with the
  567. * lParam a pointer to the structure below.
  568. *
  569. * dbud_dbh - DEV_BROADCAST_HEADER must be filled in as usual.
  570. *
  571. * dbud_szName contains a case-sensitive ASCIIZ name which names the
  572. * message. The message name consists of the vendor name, a backslash,
  573. * then arbitrary user-defined ASCIIZ text. For example:
  574. *
  575. * "WidgetWare\QueryScannerShutdown"
  576. * "WidgetWare\Video Q39S\AdapterReady"
  577. *
  578. * After the ASCIIZ name, arbitrary information may be provided.
  579. * Make sure that dbud_dbh.dbch_size is big enough to encompass
  580. * all the data. And remember that nothing in the structure may
  581. * contain pointers.
  582. *)
  583. DBT_USERDEFINED = $FFFF;
  584. {$EXTERNALSYM DBT_USERDEFINED}
  585. type
  586. PDEV_BROADCAST_USERDEFINED = ^DEV_BROADCAST_USERDEFINED;
  587. {$EXTERNALSYM PDEV_BROADCAST_USERDEFINED}
  588. _DEV_BROADCAST_USERDEFINED = record
  589. dbud_dbh: DEV_BROADCAST_HDR;
  590. dbud_szName: array [0..0] of Char;
  591. // BYTE dbud_rgbUserDefined[];*/ /* User-defined contents */
  592. end;
  593. {$EXTERNALSYM _DEV_BROADCAST_USERDEFINED}
  594. DEV_BROADCAST_USERDEFINED = _DEV_BROADCAST_USERDEFINED;
  595. {$EXTERNALSYM DEV_BROADCAST_USERDEFINED}
  596. TDevBroadcastUserDefined = DEV_BROADCAST_USERDEFINED;
  597. PDevBroadcastUserDefined = PDEV_BROADCAST_USERDEFINED;
  598. // (rom) added own message type for WM_DEVICECHANGE
  599. // see Messages.pas TWMNoParams ff.
  600. type
  601. TWMDeviceChange = record
  602. Msg: Cardinal;
  603. Event: UINT;
  604. dwData: Pointer;
  605. Result: Longint;
  606. end;
  607. {$ENDIF JWA_IMPLEMENTATIONSECTION}
  608. {$IFNDEF JWA_OMIT_SECTIONS}
  609. implementation
  610. //uses ...
  611. {$ENDIF JWA_OMIT_SECTIONS}
  612. {$IFNDEF JWA_INTERFACESECTION}
  613. //your implementation here
  614. {$ENDIF JWA_INTERFACESECTION}
  615. {$IFNDEF JWA_OMIT_SECTIONS}
  616. end.
  617. {$ENDIF JWA_OMIT_SECTIONS}