jwaqossp.pas 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023
  1. {******************************************************************************}
  2. { }
  3. { Winsock2 QOS Service Provider API interface Unit 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: qossp.h, released August 2001. The original Pascal }
  9. { code is: QosSp.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 JwaQosSp;
  43. {$WEAKPACKAGEUNIT}
  44. {$HPPEMIT ''}
  45. {$HPPEMIT '#include "qossp.h"'}
  46. {$HPPEMIT ''}
  47. {$I jediapilib.inc}
  48. interface
  49. uses
  50. {$IFDEF USE_DELPHI_TYPES}
  51. Windows,
  52. {$ELSE}
  53. JwaWinType,
  54. {$ENDIF USE_DELPHI_TYPES}
  55. JwaWinSock2, JwaQos;
  56. (*
  57. * Definition of object Types
  58. *
  59. *
  60. * define the values for ObjectType above - RSVP Objects ids start at an
  61. * offset from zero to allow for ATM objects that might be defined in the
  62. * lower number range.
  63. *)
  64. const
  65. RSVP_OBJECT_ID_BASE = 1000;
  66. {$EXTERNALSYM RSVP_OBJECT_ID_BASE}
  67. RSVP_OBJECT_STATUS_INFO = $00000000 + RSVP_OBJECT_ID_BASE;
  68. {$EXTERNALSYM RSVP_OBJECT_STATUS_INFO}
  69. (* RSVP_STATUS_INFO structure passed *)
  70. RSVP_OBJECT_RESERVE_INFO = $00000001 + RSVP_OBJECT_ID_BASE;
  71. {$EXTERNALSYM RSVP_OBJECT_RESERVE_INFO}
  72. (* RSVP_RESERVE_INFO structure passed *)
  73. RSVP_OBJECT_ADSPEC = $00000002 + RSVP_OBJECT_ID_BASE;
  74. {$EXTERNALSYM RSVP_OBJECT_ADSPEC}
  75. (* RSVP_ADSPEC structure passed *)
  76. RSVP_OBJECT_POLICY_INFO = $00000003 + RSVP_OBJECT_ID_BASE;
  77. {$EXTERNALSYM RSVP_OBJECT_POLICY_INFO}
  78. (* RSVP POLICY ELEMENT(S) retrieved *)
  79. RSVP_OBJECT_FILTERSPEC_LIST = $00000004 + RSVP_OBJECT_ID_BASE;
  80. {$EXTERNALSYM RSVP_OBJECT_FILTERSPEC_LIST}
  81. (* RSVP SENDER LIST returned *)
  82. (*
  83. * IPV4 addressing for RSVP FILTERSPECS
  84. *)
  85. type
  86. _IN_ADDR_IPV4 = record
  87. Addr: ULONG;
  88. AddrBytes: array [0..3] of UCHAR;
  89. end;
  90. {$EXTERNALSYM _IN_ADDR_IPV4}
  91. IN_ADDR_IPV4 = _IN_ADDR_IPV4;
  92. {$EXTERNALSYM IN_ADDR_IPV4}
  93. LPIN_ADDR_IPV4 = ^IN_ADDR_IPV4;
  94. {$EXTERNALSYM LPIN_ADDR_IPV4}
  95. TInAddrIPV4 = IN_ADDR_IPV4;
  96. PInAddrIPV4 = LPIN_ADDR_IPV4;
  97. (*
  98. * IPV6 addressing for RSVP FILTERSPECS
  99. *)
  100. _IN_ADDR_IPV6 = record
  101. Addr: array [0..15] of UCHAR; //IPV6 address
  102. end;
  103. {$EXTERNALSYM _IN_ADDR_IPV6}
  104. IN_ADDR_IPV6 = _IN_ADDR_IPV6;
  105. {$EXTERNALSYM IN_ADDR_IPV6}
  106. LPIN_ADDR_IPV6 = ^IN_ADDR_IPV6;
  107. {$EXTERNALSYM LPIN_ADDR_IPV6}
  108. TInAddrIPV6 = IN_ADDR_IPV6;
  109. PInAddrIPV6 = LPIN_ADDR_IPV6;
  110. LPCIN_ADDR_IPV6 = ^IN_ADDR_IPV6;
  111. {$EXTERNALSYM LPCIN_ADDR_IPV6}
  112. (*
  113. * IPV4 addressing for RSVP FILTERSPECS
  114. *)
  115. LPRSVP_FILTERSPEC_V4 = ^RSVP_FILTERSPEC_V4;
  116. {$EXTERNALSYM LPRSVP_FILTERSPEC_V4}
  117. _RSVP_FILTERSPEC_V4 = record
  118. Address: IN_ADDR_IPV4;
  119. Unused: USHORT;
  120. Port: USHORT;
  121. end;
  122. {$EXTERNALSYM _RSVP_FILTERSPEC_V4}
  123. RSVP_FILTERSPEC_V4 = _RSVP_FILTERSPEC_V4;
  124. {$EXTERNALSYM RSVP_FILTERSPEC_V4}
  125. TRsvpFilterSpecV4 = RSVP_FILTERSPEC_V4;
  126. PRsvpFilterSpecV4 = LPRSVP_FILTERSPEC_V4;
  127. LPRSVP_FILTERSPEC_V6 = ^RSVP_FILTERSPEC_V6;
  128. {$EXTERNALSYM LPRSVP_FILTERSPEC_V6}
  129. _RSVP_FILTERSPEC_V6 = record
  130. Address: IN_ADDR_IPV6;
  131. UnUsed: USHORT;
  132. Port: USHORT;
  133. end;
  134. {$EXTERNALSYM _RSVP_FILTERSPEC_V6}
  135. RSVP_FILTERSPEC_V6 = _RSVP_FILTERSPEC_V6;
  136. {$EXTERNALSYM RSVP_FILTERSPEC_V6}
  137. TRsvpFilterSpecV6 = RSVP_FILTERSPEC_V6;
  138. PRsvpFilterSpecV6 = LPRSVP_FILTERSPEC_V6;
  139. LPRSVP_FILTERSPEC_V6_FLOW = ^RSVP_FILTERSPEC_V6_FLOW;
  140. {$EXTERNALSYM LPRSVP_FILTERSPEC_V6_FLOW}
  141. _RSVP_FILTERSPEC_V6_FLOW = record
  142. Address: IN_ADDR_IPV6;
  143. UnUsed: UCHAR;
  144. FlowLabel: array [0..2] of UCHAR;
  145. end;
  146. {$EXTERNALSYM _RSVP_FILTERSPEC_V6_FLOW}
  147. RSVP_FILTERSPEC_V6_FLOW = _RSVP_FILTERSPEC_V6_FLOW;
  148. {$EXTERNALSYM RSVP_FILTERSPEC_V6_FLOW}
  149. TRsvpFilterSpecV6Flow = RSVP_FILTERSPEC_V6_FLOW;
  150. PRsvpFilterSpecV6Flow = LPRSVP_FILTERSPEC_V6_FLOW;
  151. LPRSVP_FILTERSPEC_V4_GPI = ^RSVP_FILTERSPEC_V4_GPI;
  152. {$EXTERNALSYM LPRSVP_FILTERSPEC_V4_GPI}
  153. _RSVP_FILTERSPEC_V4_GPI = record
  154. Address: IN_ADDR_IPV4;
  155. GeneralPortId: ULONG;
  156. end;
  157. {$EXTERNALSYM _RSVP_FILTERSPEC_V4_GPI}
  158. RSVP_FILTERSPEC_V4_GPI = _RSVP_FILTERSPEC_V4_GPI;
  159. {$EXTERNALSYM RSVP_FILTERSPEC_V4_GPI}
  160. TRsvpFilterSpecV4Gpi = RSVP_FILTERSPEC_V4_GPI;
  161. PRsvpFilterSpecV4Gpi = LPRSVP_FILTERSPEC_V4_GPI;
  162. LPRSVP_FILTERSPEC_V6_GPI = ^RSVP_FILTERSPEC_V6_GPI;
  163. {$EXTERNALSYM LPRSVP_FILTERSPEC_V6_GPI}
  164. _RSVP_FILTERSPEC_V6_GPI = record
  165. Address: IN_ADDR_IPV6;
  166. GeneralPortId: ULONG;
  167. end;
  168. {$EXTERNALSYM _RSVP_FILTERSPEC_V6_GPI}
  169. RSVP_FILTERSPEC_V6_GPI = _RSVP_FILTERSPEC_V6_GPI;
  170. {$EXTERNALSYM RSVP_FILTERSPEC_V6_GPI}
  171. TRsvpFilterSpecV6Gpi = RSVP_FILTERSPEC_V6_GPI;
  172. PRsvpFilterSpecV6Gpi = LPRSVP_FILTERSPEC_V6_GPI;
  173. (*
  174. * FILTERSPEC TYPES used in making reservations.
  175. *)
  176. const
  177. FILTERSPECV4 = 1;
  178. {$EXTERNALSYM FILTERSPECV4}
  179. FILTERSPECV6 = 2;
  180. {$EXTERNALSYM FILTERSPECV6}
  181. FILTERSPECV6_FLOW = 3;
  182. {$EXTERNALSYM FILTERSPECV6_FLOW}
  183. FILTERSPECV4_GPI = 4;
  184. {$EXTERNALSYM FILTERSPECV4_GPI}
  185. FILTERSPECV6_GPI = 5;
  186. {$EXTERNALSYM FILTERSPECV6_GPI}
  187. FILTERSPEC_END = 6;
  188. {$EXTERNALSYM FILTERSPEC_END}
  189. type
  190. FilterType = DWORD;
  191. {$EXTERNALSYM FilterType}
  192. type
  193. LPRSVP_FILTERSPEC = ^RSVP_FILTERSPEC;
  194. {$EXTERNALSYM LPRSVP_FILTERSPEC}
  195. _RSVP_FILTERSPEC = record
  196. Type_: FilterType;
  197. case Integer of
  198. 0: (FilterSpecV4: RSVP_FILTERSPEC_V4);
  199. 1: (FilterSpecV6: RSVP_FILTERSPEC_V6);
  200. 2: (FilterSpecV6Flow: RSVP_FILTERSPEC_V6_FLOW);
  201. 3: (FilterSpecV4Gpi: RSVP_FILTERSPEC_V4_GPI);
  202. 4: (FilterSpecV6Gpi: RSVP_FILTERSPEC_V6_GPI);
  203. end;
  204. {$EXTERNALSYM _RSVP_FILTERSPEC}
  205. RSVP_FILTERSPEC = _RSVP_FILTERSPEC;
  206. {$EXTERNALSYM RSVP_FILTERSPEC}
  207. TRsvpFilterSpec = RSVP_FILTERSPEC;
  208. PRsvpFilterSpec = LPRSVP_FILTERSPEC;
  209. (*
  210. * FLOWDESCRIPTOR Structure used for specifying one or more
  211. * Filters per Flowspec.
  212. *)
  213. LPFLOWDESCRIPTOR = ^FLOWDESCRIPTOR;
  214. {$EXTERNALSYM LPFLOWDESCRIPTOR}
  215. _FLOWDESCRIPTOR = record
  216. FlowSpec: FLOWSPEC;
  217. NumFilters: ULONG;
  218. FilterList: LPRSVP_FILTERSPEC;
  219. end;
  220. {$EXTERNALSYM _FLOWDESCRIPTOR}
  221. FLOWDESCRIPTOR = _FLOWDESCRIPTOR;
  222. {$EXTERNALSYM FLOWDESCRIPTOR}
  223. TFlowDescriptor = FLOWDESCRIPTOR;
  224. PFlowDescriptor = LPFLOWDESCRIPTOR;
  225. (*
  226. * RSVP_POLICY contains undefined policy data. RSVP transports this
  227. * data on behalf of the Policy Control component.
  228. *)
  229. LPRSVP_POLICY = ^RSVP_POLICY;
  230. {$EXTERNALSYM LPRSVP_POLICY}
  231. _RSVP_POLICY = record
  232. Len: USHORT;
  233. Type_: USHORT;
  234. Info: array [0..4 - 1] of UCHAR;
  235. end;
  236. {$EXTERNALSYM _RSVP_POLICY}
  237. RSVP_POLICY = _RSVP_POLICY;
  238. {$EXTERNALSYM RSVP_POLICY}
  239. TRsvpPolicy = RSVP_POLICY;
  240. PRsvpPolicy = LPRSVP_POLICY;
  241. LPCRSVP_POLICY = ^RSVP_POLICY;
  242. {$EXTERNALSYM LPCRSVP_POLICY}
  243. const
  244. RSVP_POLICY_HDR_LEN = SizeOf(USHORT) + SizeOf(USHORT);
  245. {$EXTERNALSYM RSVP_POLICY_HDR_LEN}
  246. (*
  247. * RSVP_POLICY_INFO contains undefined policy element(s) retrieved from RSVP.
  248. *)
  249. type
  250. LPRSVP_POLICY_INFO = ^RSVP_POLICY_INFO;
  251. {$EXTERNALSYM LPRSVP_POLICY_INFO}
  252. _RSVP_POLICY_INFO = record
  253. ObjectHdr: QOS_OBJECT_HDR;
  254. NumPolicyElement: ULONG; // count of the number of policy elements
  255. PolicyElement: array [0..0] of RSVP_POLICY; // a list of the policy elements retrieved
  256. end;
  257. {$EXTERNALSYM _RSVP_POLICY_INFO}
  258. RSVP_POLICY_INFO = _RSVP_POLICY_INFO;
  259. {$EXTERNALSYM RSVP_POLICY_INFO}
  260. TRsvpPolicyInfo = RSVP_POLICY_INFO;
  261. PRsvpPolicyInfo = LPRSVP_POLICY_INFO;
  262. (*
  263. * RSVP_RESERVE_INFO Structure used for storing RSVP specific
  264. * information for fine tuning interaction via the Winsock2
  265. * Generic QoS API via the provider specific buffer. This structure
  266. * includes the QOS_OBJECT_HDR structure directly
  267. *)
  268. LPRSVP_RESERVE_INFO = ^RSVP_RESERVE_INFO;
  269. {$EXTERNALSYM LPRSVP_RESERVE_INFO}
  270. _RSVP_RESERVE_INFO = record
  271. ObjectHdr: QOS_OBJECT_HDR; // type and length of this object
  272. Style: ULONG; // RSVP Style (FF,WF,SE)
  273. ConfirmRequest: ULONG; // Non Zero for Confirm Request (receive only)
  274. PolicyElementList: LPRSVP_POLICY_INFO; // Points to the set of policy elements
  275. NumFlowDesc: ULONG; // Number of FlowDesc
  276. FlowDescList: LPFLOWDESCRIPTOR; // Points to the FlowDesc list
  277. end;
  278. {$EXTERNALSYM _RSVP_RESERVE_INFO}
  279. RSVP_RESERVE_INFO = _RSVP_RESERVE_INFO;
  280. {$EXTERNALSYM RSVP_RESERVE_INFO}
  281. TRsvpReserveInfo = RSVP_RESERVE_INFO;
  282. PRsvpReserveInfo = LPRSVP_RESERVE_INFO;
  283. LPCRSVP_RESERVE_INFO = ^RSVP_RESERVE_INFO;
  284. {$EXTERNALSYM LPCRSVP_RESERVE_INFO}
  285. (*
  286. * definitions for the ulStyle in the previous structure
  287. *)
  288. const
  289. RSVP_DEFAULT_STYLE = $00000000;
  290. {$EXTERNALSYM RSVP_DEFAULT_STYLE}
  291. RSVP_WILDCARD_STYLE = $00000001;
  292. {$EXTERNALSYM RSVP_WILDCARD_STYLE}
  293. RSVP_FIXED_FILTER_STYLE = $00000002;
  294. {$EXTERNALSYM RSVP_FIXED_FILTER_STYLE}
  295. RSVP_SHARED_EXPLICIT_STYLE = $00000003;
  296. {$EXTERNALSYM RSVP_SHARED_EXPLICIT_STYLE}
  297. (*
  298. * RSVP_STATUS_INFO Structure used for storing RSVP specific
  299. * error of status indications. This also serves as a header
  300. * for additional objects in the provider specific buffer when
  301. * interacting via Winsock2 Generic QoS API. This structure includes
  302. * the QOS_OBJECT_COUNT and QOS_OBJECT_HDR structures directly It is
  303. * expected to be the first structure in the provider specific structure
  304. * since it includes the QOS_OBJECT_COUNT
  305. *)
  306. type
  307. LPRSVP_STATUS_INFO = ^RSVP_STATUS_INFO;
  308. {$EXTERNALSYM LPRSVP_STATUS_INFO}
  309. _RSVP_STATUS_INFO = record
  310. ObjectHdr: QOS_OBJECT_HDR; // Object Hdr
  311. StatusCode: ULONG; // Error or Status Information see Winsock2.h
  312. ExtendedStatus1: ULONG; // Provider specific status extension
  313. ExtendedStatus2: ULONG; // Provider specific status extension
  314. end;
  315. {$EXTERNALSYM _RSVP_STATUS_INFO}
  316. RSVP_STATUS_INFO = _RSVP_STATUS_INFO;
  317. {$EXTERNALSYM RSVP_STATUS_INFO}
  318. TRsvpStatusInfo = RSVP_STATUS_INFO;
  319. PRsvpStatusInfo = LPRSVP_STATUS_INFO;
  320. LPCRSVP_STATUS_INFO = ^RSVP_STATUS_INFO;
  321. {$EXTERNALSYM LPCRSVP_STATUS_INFO}
  322. (*
  323. * QOS_DestAddr structure -- used for WSAIoctl(SIO_SET_QOS) when we
  324. * do not want to issue a connect for a sending socket. The destination
  325. * address is required so we can generate the session information for
  326. * RSVP signalling.
  327. *)
  328. LPQOS_DESTADDR = ^QOS_DESTADDR;
  329. {$EXTERNALSYM LPQOS_DESTADDR}
  330. _QOS_DESTADDR = record
  331. ObjectHdr: QOS_OBJECT_HDR; // Object header
  332. SocketAddress: PSockAddr; // Destination socket address
  333. SocketAddressLength: ULONG; // Length of the address structure
  334. end;
  335. {$EXTERNALSYM _QOS_DESTADDR}
  336. QOS_DESTADDR = _QOS_DESTADDR;
  337. {$EXTERNALSYM QOS_DESTADDR}
  338. TQosDestAddr = QOS_DESTADDR;
  339. PQosDestAddr = LPQOS_DESTADDR;
  340. LPCQOS_DESTADDR = ^QOS_DESTADDR;
  341. {$EXTERNALSYM LPCQOS_DESTADDR}
  342. (*
  343. * this structure defines the "General Characterization Parameters" contained in
  344. * the RSVP Adspec object
  345. *)
  346. LPAD_GENERAL_PARAMS = ^AD_GENERAL_PARAMS;
  347. {$EXTERNALSYM LPAD_GENERAL_PARAMS}
  348. _AD_GENERAL_PARAMS = record
  349. IntServAwareHopCount: ULONG; // number of hops that conform to
  350. // Integrated Services requirements *)
  351. PathBandwidthEstimate: ULONG; // minimum bandwidth available from
  352. // sender to receiver *)
  353. MinimumLatency: ULONG; // sum of minimum latency of the packet
  354. // forwarding process in routers
  355. // (in usec)*)
  356. PathMTU: ULONG; // max transmission unit end to end that
  357. // will not incur fragmentation *)
  358. Flags: ULONG; // used to hold break bits.*)
  359. end;
  360. {$EXTERNALSYM _AD_GENERAL_PARAMS}
  361. AD_GENERAL_PARAMS = _AD_GENERAL_PARAMS;
  362. {$EXTERNALSYM AD_GENERAL_PARAMS}
  363. TAdGeneralParams = AD_GENERAL_PARAMS;
  364. PAdGeneralParams = LPAD_GENERAL_PARAMS;
  365. (*
  366. * Minimum Latency may be set to this "undefined" value
  367. *)
  368. const
  369. INDETERMINATE_LATENCY = DWORD($FFFFFFFF);
  370. {$EXTERNALSYM INDETERMINATE_LATENCY}
  371. (*
  372. * This Flag is used to indicate the existence of a network element not
  373. * supporting QoS control services somewhere in the data path. If this bit
  374. * is set in the specific service override then it indicates that that
  375. * service was not supported at at least one hop.
  376. *)
  377. AD_FLAG_BREAK_BIT = $00000001;
  378. {$EXTERNALSYM AD_FLAG_BREAK_BIT}
  379. (*
  380. * this structure describes the Guaranteed service parameters
  381. *)
  382. type
  383. LPAD_GUARANTEED = ^AD_GUARANTEED;
  384. {$EXTERNALSYM LPAD_GUARANTEED}
  385. _AD_GUARANTEED = record
  386. CTotal: ULONG;
  387. DTotal: ULONG;
  388. CSum: ULONG;
  389. DSum: ULONG;
  390. end;
  391. {$EXTERNALSYM _AD_GUARANTEED}
  392. AD_GUARANTEED = _AD_GUARANTEED;
  393. {$EXTERNALSYM AD_GUARANTEED}
  394. TAdGuaranteed = AD_GUARANTEED;
  395. PAdGuaranteed = LPAD_GUARANTEED;
  396. (*
  397. * this structure describes the format of the parameter buffer that can be
  398. * included in the Service_Type structure below. This structure allows an
  399. * application to include any valid Int Serv service parameter in the Buffer
  400. * value, after providing the Int Serv parameter id in the ParameterId field.
  401. *)
  402. LPPARAM_BUFFER = ^PARAM_BUFFER;
  403. {$EXTERNALSYM LPPARAM_BUFFER}
  404. _PARAM_BUFFER = record
  405. ParameterId: ULONG; // Int Server parameter ID
  406. Length: ULONG; // total length of this structure
  407. // ( 8 bytes + length of Buffer )
  408. Buffer: array [0..1 - 1] of UCHAR; // Paramter itself
  409. end;
  410. {$EXTERNALSYM _PARAM_BUFFER}
  411. PARAM_BUFFER = _PARAM_BUFFER;
  412. {$EXTERNALSYM PARAM_BUFFER}
  413. TParamBuffer = PARAM_BUFFER;
  414. PParamBuffer = LPPARAM_BUFFER;
  415. (*
  416. * this structure contains the service types supported
  417. *)
  418. LPCONTROL_SERVICE = ^CONTROL_SERVICE;
  419. {$EXTERNALSYM LPCONTROL_SERVICE}
  420. _CONTROL_SERVICE = record
  421. //
  422. // the length of this entire structure including the following buffer.
  423. // This length value can be added to the ptr to the structure to get the ptr
  424. // to the next SERVICE_TYPE structure in the list, until the
  425. // NumberOfServices count has been exhausted.
  426. //
  427. Length: ULONG;
  428. Service: SERVICETYPE;
  429. Overrides: AD_GENERAL_PARAMS;
  430. //
  431. // service specific information ( controlled load has no service specific
  432. // info here )
  433. //
  434. case Integer of
  435. 0: (Guaranteed: AD_GUARANTEED);
  436. 1: (ParamBuffer: array [0..0] of PARAM_BUFFER); // allows for other services down the road
  437. end;
  438. {$EXTERNALSYM _CONTROL_SERVICE}
  439. CONTROL_SERVICE = _CONTROL_SERVICE;
  440. {$EXTERNALSYM CONTROL_SERVICE}
  441. TControlService = CONTROL_SERVICE;
  442. PControlService = LPCONTROL_SERVICE;
  443. (*
  444. * This structure defines the information which is carried in the Rsvp
  445. * Adspec. This Rsvp object typically indicates which service types are
  446. * available ( Controlled Load and/or Guaranteed Service ), if a non-Rsvp
  447. * hop has been encountered by the Path message, and the minumum MTU along
  448. * the path. The services array indicates which services are supported
  449. *)
  450. LPRSVP_ADSPEC = ^RSVP_ADSPEC;
  451. {$EXTERNALSYM LPRSVP_ADSPEC}
  452. _RSVP_ADSPEC = record
  453. ObjectHdr: QOS_OBJECT_HDR;
  454. GeneralParams: AD_GENERAL_PARAMS; // contains the general characterization paramters
  455. NumberOfServices: ULONG; // count of the number of services
  456. Services: array [0..0] of CONTROL_SERVICE; // a list of the services supported/requested
  457. end;
  458. {$EXTERNALSYM _RSVP_ADSPEC}
  459. RSVP_ADSPEC = _RSVP_ADSPEC;
  460. {$EXTERNALSYM RSVP_ADSPEC}
  461. TRsvpAdSpec = RSVP_ADSPEC;
  462. PRsvpAdSpec = LPRSVP_ADSPEC;
  463. //
  464. // Opcode for the SIO_CHK_QOS ioctl
  465. // (specific for the Microsoft QOS Service Provider
  466. //
  467. // Bascially:
  468. //
  469. // SIO_CHK_QOS = _WSAIORW(IOC_VENDOR,1)
  470. // = mIOC_IN | mIOC_OUT | mIOC_VENDOR | mCOMPANY | ioctl_code
  471. // where
  472. // mIOC_IN = 0x80000000
  473. // mIOC_OUT = 0x40000000
  474. // mIOC_VENDOR = 0x04000000
  475. // mCOMPANY = 0x18000000
  476. // ioctl_code = 0x00000001
  477. //
  478. // See WSAIoctl man page for details.
  479. //
  480. const
  481. mIOC_IN = DWORD($80000000);
  482. {$EXTERNALSYM mIOC_IN}
  483. mIOC_OUT = $40000000;
  484. {$EXTERNALSYM mIOC_OUT}
  485. mIOC_VENDOR = $04000000;
  486. {$EXTERNALSYM mIOC_VENDOR}
  487. mCOMPANY = $18000000;
  488. {$EXTERNALSYM mCOMPANY}
  489. ioctl_code = $00000001;
  490. {$EXTERNALSYM ioctl_code}
  491. SIO_CHK_QOS = mIOC_IN or mIOC_OUT or mIOC_VENDOR or mCOMPANY or ioctl_code;
  492. {$EXTERNALSYM SIO_CHK_QOS}
  493. //
  494. // The following may be specified in the input buffer
  495. // of the SIO_CHK_IOCTL ioctl call
  496. //
  497. QOSSPBASE = 50000;
  498. {$EXTERNALSYM QOSSPBASE}
  499. ALLOWED_TO_SEND_DATA = QOSSPBASE + 1; // query the SBM/BEST_EFFORT limit
  500. {$EXTERNALSYM ALLOWED_TO_SEND_DATA}
  501. // -- result is based on a comparison between
  502. // the user-specified token rate and the
  503. // SBM/BEST_EFFORT bandwidth parameters in
  504. // the system
  505. // -- result is a YES(1) or NO(0) answer
  506. // in the output buffer
  507. ABLE_TO_RECV_RSVP = QOSSPBASE + 2; // query the SBM/BEST_EFFORT limit
  508. {$EXTERNALSYM ABLE_TO_RECV_RSVP}
  509. // -- result is based on a comparison between
  510. // the user-specified token rate and the
  511. // SBM/BEST_EFFORT bandwidth parameters in
  512. // the system
  513. // -- result is a YES(1) or NO(0) answer
  514. // in the output buffer
  515. LINE_RATE = QOSSPBASE + 3; // query the interface capacity
  516. {$EXTERNALSYM LINE_RATE}
  517. // -- result returned in the output buffer
  518. // in kilo-bits per second
  519. LOCAL_TRAFFIC_CONTROL = QOSSPBASE + 4; // check if Kernel Traffic Control is available or not
  520. {$EXTERNALSYM LOCAL_TRAFFIC_CONTROL}
  521. // -- 0 if not available
  522. // -- 1 if avaiable
  523. // -- INFO_NOT_AVAILABLE if there is no way to check
  524. LOCAL_QOSABILITY = QOSSPBASE + 5; // The followings are for
  525. {$EXTERNALSYM LOCAL_QOSABILITY}
  526. // the Discovery of Local QOSability
  527. // -- 0 if no local QOS support
  528. // -- 1 if local QOS support available
  529. // -- INFO_NOT_AVAILABLE if there is no way to check
  530. END_TO_END_QOSABILITY = QOSSPBASE + 6; // The followings are for
  531. {$EXTERNALSYM END_TO_END_QOSABILITY}
  532. // the Discovery of End-to-End QOSability
  533. // -- 0 if no end-to-end QOS support
  534. // -- 1 if end-to-end QOS support available
  535. // -- INFO_NOT_AVAILABLE if there is no way to check
  536. INFO_NOT_AVAILABLE = DWORD($FFFFFFFF); // used when LINE_RATE is not known
  537. {$EXTERNALSYM INFO_NOT_AVAILABLE}
  538. ANY_DEST_ADDR = DWORD($FFFFFFFF); // for QOS_OBJECT_DEST_ADDR
  539. {$EXTERNALSYM ANY_DEST_ADDR}
  540. // The followings are for Guaranteed_Service+Latency -> ISSLOW_Traffic_Class Mapping
  541. MODERATELY_DELAY_SENSITIVE = DWORD($FFFFFFFD);
  542. {$EXTERNALSYM MODERATELY_DELAY_SENSITIVE}
  543. HIGHLY_DELAY_SENSITIVE = DWORD($FFFFFFFE);
  544. {$EXTERNALSYM HIGHLY_DELAY_SENSITIVE}
  545. //
  546. // QOSSP Error Code/Value
  547. //
  548. QOSSP_ERR_BASE = QOSSPBASE + 6000;
  549. {$EXTERNALSYM QOSSP_ERR_BASE}
  550. // No error
  551. GQOS_NO_ERRORCODE = 0;
  552. {$EXTERNALSYM GQOS_NO_ERRORCODE}
  553. GQOS_NO_ERRORVALUE = 0;
  554. {$EXTERNALSYM GQOS_NO_ERRORVALUE}
  555. // Unknown error
  556. GQOS_ERRORCODE_UNKNOWN = DWORD($FFFFFFFF);
  557. {$EXTERNALSYM GQOS_ERRORCODE_UNKNOWN}
  558. GQOS_ERRORVALUE_UNKNOWN = DWORD($FFFFFFFF);
  559. {$EXTERNALSYM GQOS_ERRORVALUE_UNKNOWN}
  560. // Admission (Resource) Error
  561. GQOS_NET_ADMISSION = QOSSP_ERR_BASE + 100;
  562. {$EXTERNALSYM GQOS_NET_ADMISSION}
  563. GQOS_OTHER = QOSSP_ERR_BASE + 100 + 1;
  564. {$EXTERNALSYM GQOS_OTHER}
  565. GQOS_DELAYBND = QOSSP_ERR_BASE + 100 + 2;
  566. {$EXTERNALSYM GQOS_DELAYBND}
  567. GQOS_BANDWIDTH = QOSSP_ERR_BASE + 100 + 3;
  568. {$EXTERNALSYM GQOS_BANDWIDTH}
  569. GQOS_MTU = QOSSP_ERR_BASE + 100 + 4;
  570. {$EXTERNALSYM GQOS_MTU}
  571. GQOS_FLOW_RATE = QOSSP_ERR_BASE + 100 + 5;
  572. {$EXTERNALSYM GQOS_FLOW_RATE}
  573. GQOS_PEAK_RATE = QOSSP_ERR_BASE + 100 + 6;
  574. {$EXTERNALSYM GQOS_PEAK_RATE}
  575. GQOS_AGG_PEAK_RATE = QOSSP_ERR_BASE + 100 + 7;
  576. {$EXTERNALSYM GQOS_AGG_PEAK_RATE}
  577. // Policy Error
  578. GQOS_NET_POLICY = QOSSP_ERR_BASE + 200;
  579. {$EXTERNALSYM GQOS_NET_POLICY}
  580. GQOS_POLICY_ERROR_UNKNOWN = QOSSP_ERR_BASE + 200 + 0;
  581. {$EXTERNALSYM GQOS_POLICY_ERROR_UNKNOWN}
  582. GQOS_POLICY_GLOBAL_DEF_FLOW_COUNT = QOSSP_ERR_BASE + 200 + 1;
  583. {$EXTERNALSYM GQOS_POLICY_GLOBAL_DEF_FLOW_COUNT}
  584. GQOS_POLICY_GLOBAL_GRP_FLOW_COUNT = QOSSP_ERR_BASE + 200 + 2;
  585. {$EXTERNALSYM GQOS_POLICY_GLOBAL_GRP_FLOW_COUNT}
  586. GQOS_POLICY_GLOBAL_USER_FLOW_COUNT = QOSSP_ERR_BASE + 200 + 3;
  587. {$EXTERNALSYM GQOS_POLICY_GLOBAL_USER_FLOW_COUNT}
  588. GQOS_POLICY_GLOBAL_UNK_USER_FLOW_COUNT = QOSSP_ERR_BASE + 200 + 4;
  589. {$EXTERNALSYM GQOS_POLICY_GLOBAL_UNK_USER_FLOW_COUNT}
  590. GQOS_POLICY_SUBNET_DEF_FLOW_COUNT = QOSSP_ERR_BASE + 200 + 5;
  591. {$EXTERNALSYM GQOS_POLICY_SUBNET_DEF_FLOW_COUNT}
  592. GQOS_POLICY_SUBNET_GRP_FLOW_COUNT = QOSSP_ERR_BASE + 200 + 6;
  593. {$EXTERNALSYM GQOS_POLICY_SUBNET_GRP_FLOW_COUNT}
  594. GQOS_POLICY_SUBNET_USER_FLOW_COUNT = QOSSP_ERR_BASE + 200 + 7;
  595. {$EXTERNALSYM GQOS_POLICY_SUBNET_USER_FLOW_COUNT}
  596. GQOS_POLICY_SUBNET_UNK_USER_FLOW_COUNT = QOSSP_ERR_BASE + 200 + 8;
  597. {$EXTERNALSYM GQOS_POLICY_SUBNET_UNK_USER_FLOW_COUNT}
  598. GQOS_POLICY_GLOBAL_DEF_FLOW_DURATION = QOSSP_ERR_BASE + 200 + 9;
  599. {$EXTERNALSYM GQOS_POLICY_GLOBAL_DEF_FLOW_DURATION}
  600. GQOS_POLICY_GLOBAL_GRP_FLOW_DURATION = QOSSP_ERR_BASE + 200 + 10;
  601. {$EXTERNALSYM GQOS_POLICY_GLOBAL_GRP_FLOW_DURATION}
  602. GQOS_POLICY_GLOBAL_USER_FLOW_DURATION = QOSSP_ERR_BASE + 200 + 11;
  603. {$EXTERNALSYM GQOS_POLICY_GLOBAL_USER_FLOW_DURATION}
  604. GQOS_POLICY_GLOBAL_UNK_USER_FLOW_DURATION = QOSSP_ERR_BASE + 200 + 12;
  605. {$EXTERNALSYM GQOS_POLICY_GLOBAL_UNK_USER_FLOW_DURATION}
  606. GQOS_POLICY_SUBNET_DEF_FLOW_DURATION = QOSSP_ERR_BASE + 200 + 13;
  607. {$EXTERNALSYM GQOS_POLICY_SUBNET_DEF_FLOW_DURATION}
  608. GQOS_POLICY_SUBNET_GRP_FLOW_DURATION = QOSSP_ERR_BASE + 200 + 14;
  609. {$EXTERNALSYM GQOS_POLICY_SUBNET_GRP_FLOW_DURATION}
  610. GQOS_POLICY_SUBNET_USER_FLOW_DURATION = QOSSP_ERR_BASE + 200 + 15;
  611. {$EXTERNALSYM GQOS_POLICY_SUBNET_USER_FLOW_DURATION}
  612. GQOS_POLICY_SUBNET_UNK_USER_FLOW_DURATION = QOSSP_ERR_BASE + 200 + 16;
  613. {$EXTERNALSYM GQOS_POLICY_SUBNET_UNK_USER_FLOW_DURATION}
  614. GQOS_POLICY_GLOBAL_DEF_FLOW_RATE = QOSSP_ERR_BASE + 200 + 17;
  615. {$EXTERNALSYM GQOS_POLICY_GLOBAL_DEF_FLOW_RATE}
  616. GQOS_POLICY_GLOBAL_GRP_FLOW_RATE = QOSSP_ERR_BASE + 200 + 18;
  617. {$EXTERNALSYM GQOS_POLICY_GLOBAL_GRP_FLOW_RATE}
  618. GQOS_POLICY_GLOBAL_USER_FLOW_RATE = QOSSP_ERR_BASE + 200 + 19;
  619. {$EXTERNALSYM GQOS_POLICY_GLOBAL_USER_FLOW_RATE}
  620. GQOS_POLICY_GLOBAL_UNK_USER_FLOW_RATE = QOSSP_ERR_BASE + 200 + 20;
  621. {$EXTERNALSYM GQOS_POLICY_GLOBAL_UNK_USER_FLOW_RATE}
  622. GQOS_POLICY_SUBNET_DEF_FLOW_RATE = QOSSP_ERR_BASE + 200 + 21;
  623. {$EXTERNALSYM GQOS_POLICY_SUBNET_DEF_FLOW_RATE}
  624. GQOS_POLICY_SUBNET_GRP_FLOW_RATE = QOSSP_ERR_BASE + 200 + 22;
  625. {$EXTERNALSYM GQOS_POLICY_SUBNET_GRP_FLOW_RATE}
  626. GQOS_POLICY_SUBNET_USER_FLOW_RATE = QOSSP_ERR_BASE + 200 + 23;
  627. {$EXTERNALSYM GQOS_POLICY_SUBNET_USER_FLOW_RATE}
  628. GQOS_POLICY_SUBNET_UNK_USER_FLOW_RATE = QOSSP_ERR_BASE + 200 + 24;
  629. {$EXTERNALSYM GQOS_POLICY_SUBNET_UNK_USER_FLOW_RATE}
  630. GQOS_POLICY_GLOBAL_DEF_PEAK_RATE = QOSSP_ERR_BASE + 200 + 25;
  631. {$EXTERNALSYM GQOS_POLICY_GLOBAL_DEF_PEAK_RATE}
  632. GQOS_POLICY_GLOBAL_GRP_PEAK_RATE = QOSSP_ERR_BASE + 200 + 26;
  633. {$EXTERNALSYM GQOS_POLICY_GLOBAL_GRP_PEAK_RATE}
  634. GQOS_POLICY_GLOBAL_USER_PEAK_RATE = QOSSP_ERR_BASE + 200 + 27;
  635. {$EXTERNALSYM GQOS_POLICY_GLOBAL_USER_PEAK_RATE}
  636. GQOS_POLICY_GLOBAL_UNK_USER_PEAK_RATE = QOSSP_ERR_BASE + 200 + 28;
  637. {$EXTERNALSYM GQOS_POLICY_GLOBAL_UNK_USER_PEAK_RATE}
  638. GQOS_POLICY_SUBNET_DEF_PEAK_RATE = QOSSP_ERR_BASE + 200 + 29;
  639. {$EXTERNALSYM GQOS_POLICY_SUBNET_DEF_PEAK_RATE}
  640. GQOS_POLICY_SUBNET_GRP_PEAK_RATE = QOSSP_ERR_BASE + 200 + 30;
  641. {$EXTERNALSYM GQOS_POLICY_SUBNET_GRP_PEAK_RATE}
  642. GQOS_POLICY_SUBNET_USER_PEAK_RATE = QOSSP_ERR_BASE + 200 + 31;
  643. {$EXTERNALSYM GQOS_POLICY_SUBNET_USER_PEAK_RATE}
  644. GQOS_POLICY_SUBNET_UNK_USER_PEAK_RATE = QOSSP_ERR_BASE + 200 + 32;
  645. {$EXTERNALSYM GQOS_POLICY_SUBNET_UNK_USER_PEAK_RATE}
  646. GQOS_POLICY_GLOBAL_DEF_SUM_FLOW_RATE = QOSSP_ERR_BASE + 200 + 33;
  647. {$EXTERNALSYM GQOS_POLICY_GLOBAL_DEF_SUM_FLOW_RATE}
  648. GQOS_POLICY_GLOBAL_GRP_SUM_FLOW_RATE = QOSSP_ERR_BASE + 200 + 34;
  649. {$EXTERNALSYM GQOS_POLICY_GLOBAL_GRP_SUM_FLOW_RATE}
  650. GQOS_POLICY_GLOBAL_USER_SUM_FLOW_RATE = QOSSP_ERR_BASE + 200 + 35;
  651. {$EXTERNALSYM GQOS_POLICY_GLOBAL_USER_SUM_FLOW_RATE}
  652. GQOS_POLICY_GLOBAL_UNK_USER_SUM_FLOW_RATE = QOSSP_ERR_BASE + 200 + 36;
  653. {$EXTERNALSYM GQOS_POLICY_GLOBAL_UNK_USER_SUM_FLOW_RATE}
  654. GQOS_POLICY_SUBNET_DEF_SUM_FLOW_RATE = QOSSP_ERR_BASE + 200 + 37;
  655. {$EXTERNALSYM GQOS_POLICY_SUBNET_DEF_SUM_FLOW_RATE}
  656. GQOS_POLICY_SUBNET_GRP_SUM_FLOW_RATE = QOSSP_ERR_BASE + 200 + 38;
  657. {$EXTERNALSYM GQOS_POLICY_SUBNET_GRP_SUM_FLOW_RATE}
  658. GQOS_POLICY_SUBNET_USER_SUM_FLOW_RATE = QOSSP_ERR_BASE + 200 + 39;
  659. {$EXTERNALSYM GQOS_POLICY_SUBNET_USER_SUM_FLOW_RATE}
  660. GQOS_POLICY_SUBNET_UNK_USER_SUM_FLOW_RATE = QOSSP_ERR_BASE + 200 + 40;
  661. {$EXTERNALSYM GQOS_POLICY_SUBNET_UNK_USER_SUM_FLOW_RATE}
  662. GQOS_POLICY_GLOBAL_DEF_SUM_PEAK_RATE = QOSSP_ERR_BASE + 200 + 41;
  663. {$EXTERNALSYM GQOS_POLICY_GLOBAL_DEF_SUM_PEAK_RATE}
  664. GQOS_POLICY_GLOBAL_GRP_SUM_PEAK_RATE = QOSSP_ERR_BASE + 200 + 42;
  665. {$EXTERNALSYM GQOS_POLICY_GLOBAL_GRP_SUM_PEAK_RATE}
  666. GQOS_POLICY_GLOBAL_USER_SUM_PEAK_RATE = QOSSP_ERR_BASE + 200 + 43;
  667. {$EXTERNALSYM GQOS_POLICY_GLOBAL_USER_SUM_PEAK_RATE}
  668. GQOS_POLICY_GLOBAL_UNK_USER_SUM_PEAK_RATE = QOSSP_ERR_BASE + 200 + 44;
  669. {$EXTERNALSYM GQOS_POLICY_GLOBAL_UNK_USER_SUM_PEAK_RATE}
  670. GQOS_POLICY_SUBNET_DEF_SUM_PEAK_RATE = QOSSP_ERR_BASE + 200 + 45;
  671. {$EXTERNALSYM GQOS_POLICY_SUBNET_DEF_SUM_PEAK_RATE}
  672. GQOS_POLICY_SUBNET_GRP_SUM_PEAK_RATE = QOSSP_ERR_BASE + 200 + 46;
  673. {$EXTERNALSYM GQOS_POLICY_SUBNET_GRP_SUM_PEAK_RATE}
  674. GQOS_POLICY_SUBNET_USER_SUM_PEAK_RATE = QOSSP_ERR_BASE + 200 + 47;
  675. {$EXTERNALSYM GQOS_POLICY_SUBNET_USER_SUM_PEAK_RATE}
  676. GQOS_POLICY_SUBNET_UNK_USER_SUM_PEAK_RATE = QOSSP_ERR_BASE + 200 + 48;
  677. {$EXTERNALSYM GQOS_POLICY_SUBNET_UNK_USER_SUM_PEAK_RATE}
  678. GQOS_POLICY_UNKNOWN_USER = QOSSP_ERR_BASE + 200 + 49;
  679. {$EXTERNALSYM GQOS_POLICY_UNKNOWN_USER}
  680. GQOS_POLICY_NO_PRIVILEGES = QOSSP_ERR_BASE + 200 + 50;
  681. {$EXTERNALSYM GQOS_POLICY_NO_PRIVILEGES}
  682. GQOS_POLICY_EXPIRED_USER_TOKEN = QOSSP_ERR_BASE + 200 + 51;
  683. {$EXTERNALSYM GQOS_POLICY_EXPIRED_USER_TOKEN}
  684. GQOS_POLICY_NO_RESOURCES = QOSSP_ERR_BASE + 200 + 52;
  685. {$EXTERNALSYM GQOS_POLICY_NO_RESOURCES}
  686. GQOS_POLICY_PRE_EMPTED = QOSSP_ERR_BASE + 200 + 53;
  687. {$EXTERNALSYM GQOS_POLICY_PRE_EMPTED}
  688. GQOS_POLICY_USER_CHANGED = QOSSP_ERR_BASE + 200 + 54;
  689. {$EXTERNALSYM GQOS_POLICY_USER_CHANGED}
  690. GQOS_POLICY_NO_ACCEPTS = QOSSP_ERR_BASE + 200 + 55;
  691. {$EXTERNALSYM GQOS_POLICY_NO_ACCEPTS}
  692. GQOS_POLICY_NO_MEMORY = QOSSP_ERR_BASE + 200 + 56;
  693. {$EXTERNALSYM GQOS_POLICY_NO_MEMORY}
  694. GQOS_POLICY_CRAZY_FLOWSPEC = QOSSP_ERR_BASE + 200 + 57;
  695. {$EXTERNALSYM GQOS_POLICY_CRAZY_FLOWSPEC}
  696. GQOS_POLICY_NO_MORE_INFO = QOSSP_ERR_BASE + 200 + 58;
  697. {$EXTERNALSYM GQOS_POLICY_NO_MORE_INFO}
  698. GQOS_POLICY_UNSUPPORTED_CREDENTIAL_TYPE = QOSSP_ERR_BASE + 200 + 59;
  699. {$EXTERNALSYM GQOS_POLICY_UNSUPPORTED_CREDENTIAL_TYPE}
  700. GQOS_POLICY_INSUFFICIENT_PRIVILEGES = QOSSP_ERR_BASE + 200 + 60;
  701. {$EXTERNALSYM GQOS_POLICY_INSUFFICIENT_PRIVILEGES}
  702. GQOS_POLICY_EXPIRED_CREDENTIAL = QOSSP_ERR_BASE + 200 + 61;
  703. {$EXTERNALSYM GQOS_POLICY_EXPIRED_CREDENTIAL}
  704. GQOS_POLICY_IDENTITY_CHANGED = QOSSP_ERR_BASE + 200 + 62;
  705. {$EXTERNALSYM GQOS_POLICY_IDENTITY_CHANGED}
  706. GQOS_POLICY_NO_QOS_PROVIDED = QOSSP_ERR_BASE + 200 + 63;
  707. {$EXTERNALSYM GQOS_POLICY_NO_QOS_PROVIDED}
  708. GQOS_POLICY_DO_NOT_SEND = QOSSP_ERR_BASE + 200 + 64;
  709. {$EXTERNALSYM GQOS_POLICY_DO_NOT_SEND}
  710. GQOS_POLICY_ERROR_USERID = QOSSP_ERR_BASE + 200 + 99;
  711. {$EXTERNALSYM GQOS_POLICY_ERROR_USERID}
  712. // RSVP Error
  713. GQOS_RSVP = QOSSP_ERR_BASE + 300;
  714. {$EXTERNALSYM GQOS_RSVP}
  715. GQOS_NO_PATH = QOSSP_ERR_BASE + 300 + 1;
  716. {$EXTERNALSYM GQOS_NO_PATH}
  717. GQOS_NO_SENDER = QOSSP_ERR_BASE + 300 + 2;
  718. {$EXTERNALSYM GQOS_NO_SENDER}
  719. GQOS_BAD_STYLE = QOSSP_ERR_BASE + 300 + 3;
  720. {$EXTERNALSYM GQOS_BAD_STYLE}
  721. GQOS_UNKNOWN_STYLE = QOSSP_ERR_BASE + 300 + 4;
  722. {$EXTERNALSYM GQOS_UNKNOWN_STYLE}
  723. GQOS_BAD_DSTPORT = QOSSP_ERR_BASE + 300 + 5;
  724. {$EXTERNALSYM GQOS_BAD_DSTPORT}
  725. GQOS_BAD_SNDPORT = QOSSP_ERR_BASE + 300 + 6;
  726. {$EXTERNALSYM GQOS_BAD_SNDPORT}
  727. GQOS_AMBIG_FILTER = QOSSP_ERR_BASE + 300 + 7;
  728. {$EXTERNALSYM GQOS_AMBIG_FILTER}
  729. GQOS_PREEMPTED = QOSSP_ERR_BASE + 300 + 8;
  730. {$EXTERNALSYM GQOS_PREEMPTED}
  731. GQOS_UNKN_OBJ_CLASS = QOSSP_ERR_BASE + 300 + 9;
  732. {$EXTERNALSYM GQOS_UNKN_OBJ_CLASS}
  733. GQOS_UNKNOWN_CTYPE = QOSSP_ERR_BASE + 300 + 10;
  734. {$EXTERNALSYM GQOS_UNKNOWN_CTYPE}
  735. GQOS_INVALID = QOSSP_ERR_BASE + 300 + 11;
  736. {$EXTERNALSYM GQOS_INVALID}
  737. // API Error
  738. GQOS_API = QOSSP_ERR_BASE + 400;
  739. {$EXTERNALSYM GQOS_API}
  740. GQOS_API_BADSEND = QOSSP_ERR_BASE + 400 + 1; (* Sender addr not my interface *)
  741. {$EXTERNALSYM GQOS_API_BADSEND}
  742. GQOS_API_BADRECV = QOSSP_ERR_BASE + 400 + 2; (* Recv addr not my interface *)
  743. {$EXTERNALSYM GQOS_API_BADRECV}
  744. GQOS_API_BADSPORT = QOSSP_ERR_BASE + 400 + 3; (* Sport !=0 but Dport == 0 *)
  745. {$EXTERNALSYM GQOS_API_BADSPORT}
  746. // TC System Error
  747. GQOS_KERNEL_TC_SYS = QOSSP_ERR_BASE + 500;
  748. {$EXTERNALSYM GQOS_KERNEL_TC_SYS}
  749. GQOS_TC_GENERIC = QOSSP_ERR_BASE + 500 + 1;
  750. {$EXTERNALSYM GQOS_TC_GENERIC}
  751. GQOS_TC_INVALID = QOSSP_ERR_BASE + 500 + 2;
  752. {$EXTERNALSYM GQOS_TC_INVALID}
  753. GQOS_NO_MEMORY = QOSSP_ERR_BASE + 500 + 3;
  754. {$EXTERNALSYM GQOS_NO_MEMORY}
  755. GQOS_BAD_ADDRESSTYPE = QOSSP_ERR_BASE + 500 + 4;
  756. {$EXTERNALSYM GQOS_BAD_ADDRESSTYPE}
  757. GQOS_BAD_DUPLICATE = QOSSP_ERR_BASE + 500 + 5;
  758. {$EXTERNALSYM GQOS_BAD_DUPLICATE}
  759. GQOS_CONFLICT = QOSSP_ERR_BASE + 500 + 6;
  760. {$EXTERNALSYM GQOS_CONFLICT}
  761. GQOS_NOTREADY = QOSSP_ERR_BASE + 500 + 7;
  762. {$EXTERNALSYM GQOS_NOTREADY}
  763. GQOS_WOULDBLOCK = QOSSP_ERR_BASE + 500 + 8;
  764. {$EXTERNALSYM GQOS_WOULDBLOCK}
  765. GQOS_INCOMPATIBLE = QOSSP_ERR_BASE + 500 + 9;
  766. {$EXTERNALSYM GQOS_INCOMPATIBLE}
  767. GQOS_BAD_SDMODE = QOSSP_ERR_BASE + 500 + 10;
  768. {$EXTERNALSYM GQOS_BAD_SDMODE}
  769. GQOS_BAD_QOSPRIORITY = QOSSP_ERR_BASE + 500 + 11;
  770. {$EXTERNALSYM GQOS_BAD_QOSPRIORITY}
  771. GQOS_BAD_TRAFFICCLASS = QOSSP_ERR_BASE + 500 + 12;
  772. {$EXTERNALSYM GQOS_BAD_TRAFFICCLASS}
  773. GQOS_NO_SYS_RESOURCES = QOSSP_ERR_BASE + 500 + 13;
  774. {$EXTERNALSYM GQOS_NO_SYS_RESOURCES}
  775. // RSVP System Error
  776. GQOS_RSVP_SYS = QOSSP_ERR_BASE + 600;
  777. {$EXTERNALSYM GQOS_RSVP_SYS}
  778. GQOS_OTHER_SYS = QOSSP_ERR_BASE + 600 + 1;
  779. {$EXTERNALSYM GQOS_OTHER_SYS}
  780. GQOS_MEMORY_SYS = QOSSP_ERR_BASE + 600 + 2;
  781. {$EXTERNALSYM GQOS_MEMORY_SYS}
  782. GQOS_API_SYS = QOSSP_ERR_BASE + 600 + 3;
  783. {$EXTERNALSYM GQOS_API_SYS}
  784. GQOS_SETQOS_NO_LOCAL_APPS = QOSSP_ERR_BASE + 600 + 4;
  785. {$EXTERNALSYM GQOS_SETQOS_NO_LOCAL_APPS}
  786. // TC Error
  787. GQOS_KERNEL_TC = QOSSP_ERR_BASE + 700;
  788. {$EXTERNALSYM GQOS_KERNEL_TC}
  789. GQOS_CONFLICT_SERV = QOSSP_ERR_BASE + 700 + 1;
  790. {$EXTERNALSYM GQOS_CONFLICT_SERV}
  791. GQOS_NO_SERV = QOSSP_ERR_BASE + 700 + 2;
  792. {$EXTERNALSYM GQOS_NO_SERV}
  793. GQOS_BAD_FLOWSPEC = QOSSP_ERR_BASE + 700 + 3;
  794. {$EXTERNALSYM GQOS_BAD_FLOWSPEC}
  795. GQOS_BAD_TSPEC = QOSSP_ERR_BASE + 700 + 4;
  796. {$EXTERNALSYM GQOS_BAD_TSPEC}
  797. GQOS_BAD_ADSPEC = QOSSP_ERR_BASE + 700 + 5;
  798. {$EXTERNALSYM GQOS_BAD_ADSPEC}
  799. // GQOS API ERRORS
  800. // WSAIoctl Error
  801. GQOS_IOCTL_SYSTEMFAILURE = QOSSP_ERR_BASE + 800 + 1;
  802. {$EXTERNALSYM GQOS_IOCTL_SYSTEMFAILURE}
  803. GQOS_IOCTL_NOBYTESRETURNED = QOSSP_ERR_BASE + 800 + 2;
  804. {$EXTERNALSYM GQOS_IOCTL_NOBYTESRETURNED}
  805. GQOS_IOCTL_INVALIDSOCKET = QOSSP_ERR_BASE + 800 + 3;
  806. {$EXTERNALSYM GQOS_IOCTL_INVALIDSOCKET}
  807. GQOS_IOCTL_INV_FUNCPTR = QOSSP_ERR_BASE + 800 + 4;
  808. {$EXTERNALSYM GQOS_IOCTL_INV_FUNCPTR}
  809. GQOS_IOCTL_INV_OVERLAPPED = QOSSP_ERR_BASE + 800 + 5;
  810. {$EXTERNALSYM GQOS_IOCTL_INV_OVERLAPPED}
  811. // SIO_SET_QOS error
  812. GQOS_SETQOS_BADINBUFFER = QOSSP_ERR_BASE + 810 + 1;
  813. {$EXTERNALSYM GQOS_SETQOS_BADINBUFFER}
  814. GQOS_SETQOS_BADFLOWSPEC = QOSSP_ERR_BASE + 810 + 2;
  815. {$EXTERNALSYM GQOS_SETQOS_BADFLOWSPEC}
  816. GQOS_SETQOS_COLLISION = QOSSP_ERR_BASE + 810 + 3;
  817. {$EXTERNALSYM GQOS_SETQOS_COLLISION}
  818. GQOS_SETQOS_BADPROVSPECBUF = QOSSP_ERR_BASE + 810 + 4;
  819. {$EXTERNALSYM GQOS_SETQOS_BADPROVSPECBUF}
  820. GQOS_SETQOS_ILLEGALOP = QOSSP_ERR_BASE + 810 + 5;
  821. {$EXTERNALSYM GQOS_SETQOS_ILLEGALOP}
  822. GQOS_SETQOS_INVALIDADDRESS = QOSSP_ERR_BASE + 810 + 6;
  823. {$EXTERNALSYM GQOS_SETQOS_INVALIDADDRESS}
  824. GQOS_SETQOS_OUTOFMEMORY = QOSSP_ERR_BASE + 810 + 7;
  825. {$EXTERNALSYM GQOS_SETQOS_OUTOFMEMORY}
  826. GQOS_SETQOS_EXCEPTION = QOSSP_ERR_BASE + 810 + 8;
  827. {$EXTERNALSYM GQOS_SETQOS_EXCEPTION}
  828. GQOS_SETQOS_BADADDRLEN = QOSSP_ERR_BASE + 810 + 9;
  829. {$EXTERNALSYM GQOS_SETQOS_BADADDRLEN}
  830. GQOS_SETQOS_NOSOCKNAME = QOSSP_ERR_BASE + 810 + 10;
  831. {$EXTERNALSYM GQOS_SETQOS_NOSOCKNAME}
  832. GQOS_SETQOS_IPTOSFAIL = QOSSP_ERR_BASE + 810 + 11;
  833. {$EXTERNALSYM GQOS_SETQOS_IPTOSFAIL}
  834. GQOS_SETQOS_OPENSESSIONFAIL = QOSSP_ERR_BASE + 810 + 12;
  835. {$EXTERNALSYM GQOS_SETQOS_OPENSESSIONFAIL}
  836. GQOS_SETQOS_SENDFAIL = QOSSP_ERR_BASE + 810 + 13;
  837. {$EXTERNALSYM GQOS_SETQOS_SENDFAIL}
  838. GQOS_SETQOS_RECVFAIL = QOSSP_ERR_BASE + 810 + 14;
  839. {$EXTERNALSYM GQOS_SETQOS_RECVFAIL}
  840. GQOS_SETQOS_BADPOLICYOBJECT = QOSSP_ERR_BASE + 810 + 15;
  841. {$EXTERNALSYM GQOS_SETQOS_BADPOLICYOBJECT}
  842. GQOS_SETQOS_UNKNOWNFILTEROBJ = QOSSP_ERR_BASE + 810 + 16;
  843. {$EXTERNALSYM GQOS_SETQOS_UNKNOWNFILTEROBJ}
  844. GQOS_SETQOS_BADFILTERTYPE = QOSSP_ERR_BASE + 810 + 17;
  845. {$EXTERNALSYM GQOS_SETQOS_BADFILTERTYPE}
  846. GQOS_SETQOS_BADFILTERCOUNT = QOSSP_ERR_BASE + 810 + 18;
  847. {$EXTERNALSYM GQOS_SETQOS_BADFILTERCOUNT}
  848. GQOS_SETQOS_BADOBJLENGTH = QOSSP_ERR_BASE + 810 + 19;
  849. {$EXTERNALSYM GQOS_SETQOS_BADOBJLENGTH}
  850. GQOS_SETQOS_BADFLOWCOUNT = QOSSP_ERR_BASE + 810 + 20;
  851. {$EXTERNALSYM GQOS_SETQOS_BADFLOWCOUNT}
  852. GQOS_SETQOS_UNKNOWNPSOBJ = QOSSP_ERR_BASE + 810 + 21;
  853. {$EXTERNALSYM GQOS_SETQOS_UNKNOWNPSOBJ}
  854. GQOS_SETQOS_BADPOLICYOBJ = QOSSP_ERR_BASE + 810 + 22;
  855. {$EXTERNALSYM GQOS_SETQOS_BADPOLICYOBJ}
  856. GQOS_SETQOS_BADFLOWDESC = QOSSP_ERR_BASE + 810 + 23;
  857. {$EXTERNALSYM GQOS_SETQOS_BADFLOWDESC}
  858. GQOS_SETQOS_BADPROVSPECOBJ = QOSSP_ERR_BASE + 810 + 24;
  859. {$EXTERNALSYM GQOS_SETQOS_BADPROVSPECOBJ}
  860. GQOS_SETQOS_NOLOOPBACK = QOSSP_ERR_BASE + 810 + 25;
  861. {$EXTERNALSYM GQOS_SETQOS_NOLOOPBACK}
  862. GQOS_SETQOS_MODENOTSUPPORTED = QOSSP_ERR_BASE + 810 + 26;
  863. {$EXTERNALSYM GQOS_SETQOS_MODENOTSUPPORTED}
  864. GQOS_SETQOS_MISSINGFLOWDESC = QOSSP_ERR_BASE + 810 + 27;
  865. {$EXTERNALSYM GQOS_SETQOS_MISSINGFLOWDESC}
  866. // SIO_GET_QOS error
  867. GQOS_GETQOS_BADOUTBUFFER = QOSSP_ERR_BASE + 840 + 1;
  868. {$EXTERNALSYM GQOS_GETQOS_BADOUTBUFFER}
  869. GQOS_GETQOS_SYSTEMFAILURE = QOSSP_ERR_BASE + 840 + 2;
  870. {$EXTERNALSYM GQOS_GETQOS_SYSTEMFAILURE}
  871. GQOS_GETQOS_EXCEPTION = QOSSP_ERR_BASE + 840 + 3;
  872. {$EXTERNALSYM GQOS_GETQOS_EXCEPTION}
  873. GQOS_GETQOS_INTERNALFAILURE = QOSSP_ERR_BASE + 840 + 4;
  874. {$EXTERNALSYM GQOS_GETQOS_INTERNALFAILURE}
  875. // SIO_CHK_QOS error
  876. GQOS_CHKQOS_BADINBUFFER = QOSSP_ERR_BASE + 850 + 1;
  877. {$EXTERNALSYM GQOS_CHKQOS_BADINBUFFER}
  878. GQOS_CHKQOS_BADOUTBUFFER = QOSSP_ERR_BASE + 850 + 2;
  879. {$EXTERNALSYM GQOS_CHKQOS_BADOUTBUFFER}
  880. GQOS_CHKQOS_SYSTEMFAILURE = QOSSP_ERR_BASE + 850 + 3;
  881. {$EXTERNALSYM GQOS_CHKQOS_SYSTEMFAILURE}
  882. GQOS_CHKQOS_INTERNALFAILURE = QOSSP_ERR_BASE + 850 + 4;
  883. {$EXTERNALSYM GQOS_CHKQOS_INTERNALFAILURE}
  884. GQOS_CHKQOS_BADPARAMETER = QOSSP_ERR_BASE + 850 + 5;
  885. {$EXTERNALSYM GQOS_CHKQOS_BADPARAMETER}
  886. GQOS_CHKQOS_EXCEPTION = QOSSP_ERR_BASE + 850 + 6;
  887. {$EXTERNALSYM GQOS_CHKQOS_EXCEPTION}
  888. implementation
  889. end.