1 #ifndef LIBRARIES_QUERY_H 2 #define LIBRARIES_QUERY_H 3 4 #ifndef EXEC_TYPES_H 5 #include <exec/types.h> 6 #endif 7 8 #ifndef EXEC_DEVICES_H 9 #include <exec/devices.h> 10 #endif 11 12 #ifndef UTILITY_TAGITEM_H 13 #include <utility/tagitem.h> 14 #endif 15 16 17 struct QueryPathEntry 18 { 19 char *Path; 20 char *Pattern; 21 ULONG Flags; 22 }; 23 24 #define QUERYPATHFLAGF_ALL 0x1 25 #define QUERYPATHFLAGF_DONTFOLLOWSOFTLINKS 0x2 26 27 struct QueryPCIMatch 28 { 29 ULONG Vendor; 30 ULONG VendorMask; 31 ULONG Device; 32 ULONG DeviceMask; 33 ULONG Class; 34 ULONG ClassMask; 35 ULONG SubClass; 36 ULONG SubClassMask; 37 ULONG ProgInfo; 38 ULONG ProgInfoMask; 39 }; 40 41 struct QueryDosTypeMatch 42 { 43 ULONG DosType; 44 ULONG Mask; 45 }; 46 47 struct QueryExtDosTypeMatch 48 { 49 ULONG DosType; 50 ULONG Mask; 51 STRPTR Name; 52 }; 53 54 55 struct QueryUnitID 56 { 57 struct Unit *Unit; 58 ULONG ID; 59 }; 60 61 /* 62 * QueryGetAttr(struct QueryInfo*,ULONG Attr); 63 */ 64 65 #define QUERYINFOATTR_Dummy (TAG_USER +0x01001000) 66 67 /* 68 * return the name from the object which is needed to reference it 69 * Data: (char *) 70 */ 71 #define QUERYINFOATTR_NAME (QUERYINFOATTR_Dummy+0) 72 /* 73 * return the id string from the object, including "$VER: " 74 * Data: (char *) 75 */ 76 #define QUERYINFOATTR_IDSTRING (QUERYINFOATTR_Dummy+1) 77 /* 78 * return a description string about the object usage 79 * Data: (char *) 80 */ 81 #define QUERYINFOATTR_DESCRIPTION (QUERYINFOATTR_Dummy+2) 82 /* 83 * return a copyright string from the object 84 * Data: (char *) 85 */ 86 #define QUERYINFOATTR_COPYRIGHT (QUERYINFOATTR_Dummy+3) 87 /* 88 * return an author string from the object 89 * Data: (char *) 90 */ 91 #define QUERYINFOATTR_AUTHOR (QUERYINFOATTR_Dummy+4) 92 /* 93 * return a date string from the object 94 * Data: (char *) 95 */ 96 #define QUERYINFOATTR_DATE (QUERYINFOATTR_Dummy+5) 97 /* 98 * obsolete, don't reuse 99 * Data: - 100 */ 101 #define QUERYINFOATTR_OBSOLETE1 (QUERYINFOATTR_Dummy+6) 102 /* 103 * return the version from the object 104 * Data: (ULONG) 105 */ 106 #define QUERYINFOATTR_VERSION (QUERYINFOATTR_Dummy+7) 107 /* 108 * return the revision from the object 109 * Data: (ULONG) 110 */ 111 #define QUERYINFOATTR_REVISION (QUERYINFOATTR_Dummy+8) 112 /* 113 * return the release tag string from the object 114 * Something like "release","alpha","beta" and so on 115 * Data: (char *) 116 */ 117 #define QUERYINFOATTR_RELEASETAG (QUERYINFOATTR_Dummy+9) 118 119 #define QUERYINFOATTR_CODETYPE (QUERYINFOATTR_Dummy+10) 120 /* 121 * give me a filename if it's an external object 122 */ 123 #define QUERYINFOATTR_FILENAME (QUERYINFOATTR_Dummy+11) 124 /* 125 * SegList, usually only valid during the lifetime of the QueryInfo (V51) 126 * Only exception would be internal filesystems 127 * Data: BPTR 128 */ 129 #define QUERYINFOATTR_SEGLIST (QUERYINFOATTR_Dummy+12) 130 131 /* 132 * QUERYTYPE_#? 133 * This type defines where the object was found. 134 * It makes no sense to return this type in a QueryTagList or 135 * through GetQueryAttr(), as it's the internal type of an 136 * object. 137 */ 138 #define QUERYINFOATTR_TYPE (QUERYINFOATTR_Dummy+13) 139 /* 140 * QUERYSUBTYPE_#? 141 * This type defines the real object type 142 */ 143 #define QUERYINFOATTR_SUBTYPE (QUERYINFOATTR_Dummy+14) 144 /* 145 * QUERYCLASS_#? 146 */ 147 #define QUERYINFOATTR_CLASS (QUERYINFOATTR_Dummy+15) 148 /* 149 * QUERYSUBCLASS_#? 150 */ 151 #define QUERYINFOATTR_SUBCLASS (QUERYINFOATTR_Dummy+16) 152 /* 153 * Priority 154 * Data: LONG 155 */ 156 #define QUERYINFOATTR_PRI (QUERYINFOATTR_Dummy+17) 157 158 /* 159 * Ptr to 160 * ULONG VENDORID, VENDORIDMASK, 161 * ULONG DEVICEID, DEVICEIDMASK, 162 * ULONG CLASS, CLASSMASK, 163 * ULONG SUBCLASS, SUBCLASSMASK, 164 * ULONG PROGINFO, PROGINFOMASK 165 * ends with all entries as 0, so you can specify several entries 166 */ 167 #define QUERYINFOATTR_PCIMATCH (QUERYINFOATTR_Dummy+20) 168 /* 169 * Array with DosTypes+Mask the filesystems supports 170 * Data = struct QueryDosTypeMatch* 171 * must end with a 0 172 */ 173 #define QUERYINFOATTR_FS_DOSTYPEMATCH (QUERYINFOATTR_Dummy+30) 174 /* 175 * Filesystem supports a Startup Argument String(ReadArgs pattern) 176 * Data: char *RDArgs Pattern 177 */ 178 #define QUERYINFOATTR_FS_STARTUP (QUERYINFOATTR_Dummy+31) 179 /* 180 * Filesystem supports a Control Argument String(ReadArgs pattern) 181 * Data: char *RDArgs Pattern 182 */ 183 #define QUERYINFOATTR_FS_CONTROL (QUERYINFOATTR_Dummy+32) 184 /* 185 * Filesystem supports FSContext 186 * Data: Boolean 187 */ 188 #define QUERYINFOATTR_FS_FSCONTEXT (QUERYINFOATTR_Dummy+33) 189 /* 190 * Filesystem's StackSize 191 * Data: ULONG 192 */ 193 #define QUERYINFOATTR_FS_STACKSIZE (QUERYINFOATTR_Dummy+34) 194 /* 195 * Filesystem's Globalvec, only valid for an internal filesysentry 196 * Data: ULONG 197 */ 198 #define QUERYINFOATTR_FS_GLOBALVEC (QUERYINFOATTR_Dummy+35) 199 /* 200 * Filesystem's SegList 201 * Data: void * 202 */ 203 #define QUERYINFOATTR_FS_SEGLIST (QUERYINFOATTR_Dummy+36) 204 /* 205 * Array with DosTypes+Mask+Name the filesystems supports 206 * Data = struct QueryExtDosTypeMatch* 207 * must end with a 0 208 */ 209 #define QUERYINFOATTR_FS_EXTDOSTYPEMATCH (QUERYINFOATTR_Dummy+37) 210 211 212 /* 213 * Device max allowed Units 214 * Data: ULONG 215 */ 216 #define QUERYINFOATTR_DEVICE_UNITS (QUERYINFOATTR_Dummy+40) 217 /* 218 * Device max allowed Luns 219 * Data: ULONG 220 */ 221 #define QUERYINFOATTR_DEVICE_LUNS (QUERYINFOATTR_Dummy+41) 222 /* 223 * Device supports New Format UnitIDs(only needed for scsi devices which support wide) 224 * Data: ULONG 225 */ 226 #define QUERYINFOATTR_DEVICE_NEWFORMAT (QUERYINFOATTR_Dummy+42) 227 /* 228 * Device supports a RdArgs String through the flags parameter 229 * Data: (char*) ReadArgs mask 230 */ 231 #define QUERYINFOATTR_DEVICE_FLAGS_TEMPLATE (QUERYINFOATTR_Dummy+43) 232 /* 233 * Device's Mask parameter 234 * Data: ULONG 235 */ 236 #define QUERYINFOATTR_DEVICE_MASK (QUERYINFOATTR_Dummy+44) 237 /* 238 * Device's MaxTransfer parameter 239 * Data: ULONG 240 */ 241 #define QUERYINFOATTR_DEVICE_MAXTRANSFER (QUERYINFOATTR_Dummy+45) 242 /* 243 * Device's Unit's OpenDevice ID in appropriate format 244 * Data: struct QueryUnitID* 245 */ 246 #define QUERYINFOATTR_DEVICE_UNIT_ID (QUERYINFOATTR_Dummy+46) 247 /* 248 * Device's Unit's UnitID 249 * Data: struct QueryUnitID* 250 */ 251 #define QUERYINFOATTR_DEVICE_UNIT_UNIT (QUERYINFOATTR_Dummy+47) 252 /* 253 * Device's Unit's LunID 254 * Data: struct QueryUnitID* 255 */ 256 #define QUERYINFOATTR_DEVICE_UNIT_LUN (QUERYINFOATTR_Dummy+48) 257 /* 258 * Device supports a config file with RdArgs format 259 * Data: (char*) ReadArgs string 260 */ 261 #define QUERYINFOATTR_DEVICE_CONFIG_TEMPLATE (QUERYINFOATTR_Dummy+49) 262 263 264 /* 265 * Net tags 266 */ 267 #define QUERYINFOATTR_NET_LINK (QUERYINFOATTR_Dummy+100) 268 /* 269 * Default IP Frame Type 270 */ 271 #define QUERYINFOATTR_NET_IPTYPE (QUERYINFOATTR_Dummy+102) 272 /* 273 * Default ARP Frame Type 274 */ 275 #define QUERYINFOATTR_NET_ARPTYPE (QUERYINFOATTR_Dummy+103) 276 277 /* 278 * Language tags 279 */ 280 281 /* 282 * Language associated with the object 283 * Data: (char*) 284 */ 285 #define QUERYINFOATTR_LANG_LANGUAGE (QUERYINFOATTR_Dummy+150) 286 /* 287 * Language name in english 288 * Data: (char*) 289 */ 290 #define QUERYINFOATTR_LANG_LANGUAGE_INT (QUERYINFOATTR_Dummy+151) 291 /* 292 * Codepage associated with the object/language (refer to iconv 293 * docs for the list of codepages) 294 * Data: (char*) 295 */ 296 #define QUERYINFOATTR_LANG_CODEPAGE (QUERYINFOATTR_Dummy+152) 297 298 /* 299 * Below..all custom attrs start 300 */ 301 #define QUERYINFOATTR_CUSTOM (QUERYINFOATTR_Dummy+0x1000) 302 303 /* 304 * Custom tags used by the keymaps 305 */ 306 #define QUERYINFOATTR_CUSTOM_KEYMAP_UNICODECONVTABLE (QUERYINFOATTR_CUSTOM + 1) 307 #define QUERYINFOATTR_CUSTOM_KEYMAP_CHARSETCONVTABLE (QUERYINFOATTR_CUSTOM + 2) 308 309 /* 310 * Custom tags used by the mprefs classes 311 */ 312 #define QUERYINFOATTR_CUSTOM_MPREFS_MACHINEPATTERN (QUERYINFOATTR_CUSTOM + 1) 313 #define QUERYINFOATTR_CUSTOM_MPREFS_DISABLEVAR (QUERYINFOATTR_CUSTOM + 2) 314 315 /*********************************************************************************** 316 * 317 * Obtain Tags 318 * 319 */ 320 321 #define QUERYFINDATTR_Dummy (TAG_USER +0x01001200) 322 323 /* 324 * search for an object with this name 325 */ 326 #define QUERYFINDATTR_NAME (QUERYFINDATTR_Dummy+0) 327 328 /* 329 * search for an object with this type 330 */ 331 #define QUERYFINDATTR_TYPE (QUERYFINDATTR_Dummy+1) 332 333 /* 334 * search for an object with this subtype 335 */ 336 #define QUERYFINDATTR_SUBTYPE (QUERYFINDATTR_Dummy+2) 337 338 /* 339 * search for an object with this class 340 */ 341 #define QUERYFINDATTR_CLASS (QUERYFINDATTR_Dummy+3) 342 343 /* 344 * search for an object with this subclass 345 */ 346 #define QUERYFINDATTR_SUBCLASS (QUERYFINDATTR_Dummy+4) 347 348 /* 349 * define if the search should happen externally(using DOS paths) 350 */ 351 #define QUERYFINDATTR_EXTERNAL (QUERYFINDATTR_Dummy+10) 352 353 /* 354 * define a dos path search table 355 */ 356 #define QUERYFINDATTR_PATHTABLE (QUERYFINDATTR_Dummy+11) 357 358 /* 359 * define if the global search table should be used 360 */ 361 #define QUERYFINDATTR_NOGLOBALPATHTABLE (QUERYFINDATTR_Dummy+12) 362 363 /* 364 * define a custom filter hook 365 */ 366 #define QUERYFINDATTR_FILTERHOOK (QUERYFINDATTR_Dummy+13) 367 368 /* 369 * define a custom filter pattern 370 */ 371 #define QUERYFINDATTR_FILTERPATTERN (QUERYFINDATTR_Dummy+14) 372 373 374 /* 375 * Ptr to 376 * ULONG VENDORID, VENDORIDMASK, 377 * ULONG DEVICEID, DEVICEIDMASK, 378 * ULONG CLASS, CLASSMASK, 379 * ULONG SUBCLASS, SUBCLASSMASK, 380 * ULONG PROGINFO, PROGINFOMASK 381 * ends with all entries as 0, so you can specify several entries 382 */ 383 #define QUERYFINDATTR_PCIMATCH (QUERYFINDATTR_Dummy+20) 384 /* 385 * define a dostype for what it should search 386 */ 387 #define QUERYFINDATTR_FS_DOSTYPE (QUERYFINDATTR_Dummy+21) 388 389 390 391 /*********************************************************************************/ 392 393 /* 394 * Type of a query object 395 */ 396 397 /* 398 * No legal type, QueryInfo with such type is equal to nil 399 */ 400 #define QUERYTYPE_NONE 0 401 /* 402 * a resident list query element 403 */ 404 #define QUERYTYPE_RESIDENT 1 405 /* 406 * a library list query element 407 */ 408 #define QUERYTYPE_LIBRARY 2 409 /* 410 * a device query element 411 */ 412 #define QUERYTYPE_DEVICE 3 413 /* 414 * a filesystem query element 415 */ 416 #define QUERYTYPE_FILESYSTEM 4 417 /* 418 * an external load query element 419 */ 420 #define QUERYTYPE_DOS 5 421 422 /* 423 * SubType of a query object 424 * This is the real type of the queryinfo object to 425 * define how to open it. 426 */ 427 #define QUERYSUBTYPE_NONE 0 428 #define QUERYSUBTYPE_LIBRARY 1 429 #define QUERYSUBTYPE_DEVICE 2 430 #define QUERYSUBTYPE_HANDLER 3 431 #define QUERYSUBTYPE_MUICLASS 4 432 #define QUERYSUBTYPE_KEYMAP 5 433 #define QUERYSUBTYPE_OBJCFRAMEWORK 6 434 435 /* 436 * Class of a query object 437 */ 438 #define QUERYCLASS_NONE 0 439 #define QUERYCLASS_HANDLER 1 440 #define QUERYCLASS_FILESYSTEM 2 441 442 #define QUERYCLASS_DATATYPE 10 443 444 #define QUERYCLASS_GRAPHICS 20 445 446 #define QUERYCLASS_STORAGE 30 447 448 #define QUERYCLASS_NET 40 449 450 #define QUERYCLASS_USB 50 /* USB Hardware Devices */ 451 #define QUERYCLASS_USBCLASS 51 /* USB Stack Classes */ 452 453 #define QUERYCLASS_FIREWIRE 60 454 455 #define QUERYCLASS_OBJDATA 70 456 457 #define QUERYCLASS_PARALLEL 80 458 459 #define QUERYCLASS_SERIAL 90 460 461 #define QUERYCLASS_MUI 100 462 463 #define QUERYCLASS_MULTIMEDIA 130 464 465 #define QUERYCLASS_INTUITION 160 466 #define QUERYCLASS_INTUITION_SCREENBAR 161 467 468 #define QUERYCLASS_PRINTER 190 469 470 #define QUERYCLASS_SCANNER 200 471 472 #define QUERYCLASS_PREFSCLASS 220 473 474 #define QUERYCLASS_AMBIENT 230 475 476 /* 477 * SubClass of a query object 478 */ 479 480 #define QUERYSUBCLASS_NONE 0 481 482 #define QUERYSUBCLASS_STORAGE_SCSI 30 483 #define QUERYSUBCLASS_STORAGE_IDE 31 484 #define QUERYSUBCLASS_STORAGE_USB 32 485 #define QUERYSUBCLASS_STORAGE_FIREWIRE 33 486 #define QUERYSUBCLASS_STORAGE_DVDRW 34 /* meta device */ 487 488 #define QUERYSUBCLASS_NET_ETHERNET 40 /* IEEE 802.3 */ 489 #define QUERYSUBCLASS_NET_PPP 41 490 #define QUERYSUBCLASS_NET_PPTP 42 491 #define QUERYSUBCLASS_NET_WLAN 43 /* IEEE 802.11 */ 492 493 #define QUERYSUBCLASS_USB_UHCI 90 494 #define QUERYSUBCLASS_USB_OHCI 91 495 #define QUERYSUBCLASS_USB_EHCI 92 496 497 #define QUERYSUBCLASS_OBJDATA_ELF 100 498 #define QUERYSUBCLASS_OBJDATA_HUNK 101 499 #define QUERYSUBCLASS_OBJDATA_COFF 102 500 501 #define QUERYSUBCLASS_SERIAL_RS232 200 502 #define QUERYSUBCLASS_SERIAL_MODEM 201 503 #define QUERYSUBCLASS_SERIAL_IRDA 202 504 #define QUERYSUBCLASS_SERIAL_USB 203 505 #define QUERYSUBCLASS_SERIAL_BLUETOOTH 204 506 507 #define QUERYSUBCLASS_HANDLER_CON 1000 508 509 #define QUERYSUBCLASS_FILESYSTEM_CD 2000 510 #define QUERYSUBCLASS_FILESYSTEM_MASSSTORAGE 2001 511 512 #define QUERYSUBCLASS_MULTIMEDIA_ENCODER 3000 513 #define QUERYSUBCLASS_MULTIMEDIA_DECODER 3001 514 #define QUERYSUBCLASS_MULTIMEDIA_STREAM 3002 515 #define QUERYSUBCLASS_MULTIMEDIA_OUTPUT 3003 516 #define QUERYSUBCLASS_MULTIMEDIA_DEMUXER 3004 517 #define QUERYSUBCLASS_MULTIMEDIA_MUXER 3005 518 #define QUERYSUBCLASS_MULTIMEDIA_BASIC 3006 519 #define QUERYSUBCLASS_MULTIMEDIA_FILTER 3007 520 521 #define QUERYSUBCLASS_INTUITION_BLANKERAPI 4000 522 523 #define QUERYSUBCLASS_USBCLASS_KEYBOARD 10000 524 #define QUERYSUBCLASS_USBCLASS_MOUSE 10001 525 #define QUERYSUBCLASS_USBCLASS_HID 10002 526 #define QUERYSUBCLASS_USBCLASS_HUB 10003 527 #define QUERYSUBCLASS_USBCLASS_PRINTER 10004 528 #define QUERYSUBCLASS_USBCLASS_SERIAL 10005 529 #define QUERYSUBCLASS_USBCLASS_STORAGE 10006 530 #define QUERYSUBCLASS_USBCLASS_BLUETOOTH 10007 531 #define QUERYSUBCLASS_USBCLASS_MIDI 10008 532 #define QUERYSUBCLASS_USBCLASS_MODEM 10009 /* isn't this the same as SERIAL? */ 533 #define QUERYSUBCLASS_USBCLASS_ETHERNET 10010 534 #define QUERYSUBCLASS_USBCLASS_WLAN 10011 535 #define QUERYSUBCLASS_USBCLASS_AUDIO 10012 536 537 #define QUERYSUBCLASS_PREFSCLASS_SYSTEM 20000 538 #define QUERYSUBCLASS_PREFSCLASS_INPUT 20001 539 #define QUERYSUBCLASS_PREFSCLASS_UI 20002 540 #define QUERYSUBCLASS_PREFSCLASS_AUDIO 20003 541 #define QUERYSUBCLASS_PREFSCLASS_NETWORK 20004 542 #define QUERYSUBCLASS_PREFSCLASS_DEVICES 20005 543 #define QUERYSUBCLASS_PREFSCLASS_FS 20006 544 #define QUERYSUBCLASS_PREFSCLASS_INTERNET 20007 545 546 #define QUERYSUBCLASS_AMBIENT_PANEL 30000 547 548 #define QUERYSUBCLASS_SCANNER_SANE 40000 549 550 /* 551 * Net Link Types used by tunnel devices 552 * like PPP 553 */ 554 555 #define QUERYNETLINK_SANA2 0 556 #define QUERYNETLINK_SERIAL 1 557 558 #endif /* LIBRARIES_QUERY_H */