jwadbt.pas 23 KB

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