Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

199 lines
5.7 KiB

  1. //
  2. // Method and Access are filled tables, so directly index them
  3. //
  4. #include <wdm.h> // CTL_CODE definition
  5. #include <windef.h>
  6. #include <burnsys.h>
  7. #include <imapipub.h>
  8. //
  9. // allow easy access to parts of the ctl code
  10. //
  11. typedef union _CTL_CODE {
  12. ULONG32 Code;
  13. struct {
  14. ULONG32 Method :2;
  15. ULONG32 Function :12;
  16. ULONG32 Access :2;
  17. ULONG32 DeviceType :16;
  18. };
  19. } CTL_CODE, *PCTL_CODE;
  20. typedef struct _IOCTL_DEVICE_TYPE {
  21. PUCHAR Name;
  22. ULONG32 Value;
  23. } IOCTL_DEVICE_TYPE, *PIOCTL_DEVICE_TYPE;
  24. typedef struct _IOCTL_METHOD {
  25. PUCHAR Name;
  26. ULONG32 Value;
  27. } IOCTL_METHOD, *PIOCTL_METHOD;
  28. typedef struct _IOCTL_ACCESS {
  29. PUCHAR Name;
  30. ULONG32 Value;
  31. } IOCTL_ACCESS, *PIOCTL_ACCESS;
  32. typedef struct _IOCTL_VALUE {
  33. PUCHAR Name;
  34. ULONG32 Code;
  35. } IOCTL_VALUE, *PIOCTL_VALUE;
  36. #define SeedIoctlBase(_I) { #_I, _I }
  37. #define SeedIoctlMethod(_I) { #_I, _I }
  38. #define SeedIoctlAccess(_I) { #_I, _I }
  39. #define SeedIoctlValue(_I) { #_I, _I }
  40. //
  41. // code depends upon the fact that these are
  42. // in numeric order, without any skipped values
  43. // the index into the array is also the value.
  44. //
  45. IOCTL_METHOD TableIoctlMethod[] = {
  46. SeedIoctlMethod(METHOD_BUFFERED),
  47. SeedIoctlMethod(METHOD_IN_DIRECT),
  48. SeedIoctlMethod(METHOD_OUT_DIRECT),
  49. SeedIoctlMethod(METHOD_NEITHER),
  50. {NULL, 0}
  51. };
  52. IOCTL_ACCESS TableIoctlAccess[] = {
  53. SeedIoctlAccess(FILE_ANY_ACCESS),
  54. SeedIoctlAccess(FILE_READ_ACCESS),
  55. SeedIoctlAccess(FILE_WRITE_ACCESS),
  56. {"FILE_READ_ACCESS | FILE_WRITE_ACCESS", 3}, // hack, cough
  57. {NULL, 0}
  58. };
  59. IOCTL_DEVICE_TYPE TableIoctlDeviceType[] = {
  60. {"Zero (invalid)", 0},
  61. SeedIoctlBase(FILE_DEVICE_BEEP),
  62. SeedIoctlBase(FILE_DEVICE_CD_ROM),
  63. SeedIoctlBase(FILE_DEVICE_CD_ROM_FILE_SYSTEM),
  64. SeedIoctlBase(FILE_DEVICE_CONTROLLER),
  65. SeedIoctlBase(FILE_DEVICE_DATALINK),
  66. SeedIoctlBase(FILE_DEVICE_DFS),
  67. SeedIoctlBase(FILE_DEVICE_DISK),
  68. SeedIoctlBase(FILE_DEVICE_DISK_FILE_SYSTEM),
  69. SeedIoctlBase(FILE_DEVICE_FILE_SYSTEM),
  70. SeedIoctlBase(FILE_DEVICE_INPORT_PORT),
  71. SeedIoctlBase(FILE_DEVICE_KEYBOARD),
  72. SeedIoctlBase(FILE_DEVICE_MAILSLOT),
  73. SeedIoctlBase(FILE_DEVICE_MIDI_IN),
  74. SeedIoctlBase(FILE_DEVICE_MIDI_OUT),
  75. SeedIoctlBase(FILE_DEVICE_MOUSE),
  76. SeedIoctlBase(FILE_DEVICE_MULTI_UNC_PROVIDER),
  77. SeedIoctlBase(FILE_DEVICE_NAMED_PIPE),
  78. SeedIoctlBase(FILE_DEVICE_NETWORK),
  79. SeedIoctlBase(FILE_DEVICE_NETWORK_BROWSER),
  80. SeedIoctlBase(FILE_DEVICE_NETWORK_FILE_SYSTEM),
  81. SeedIoctlBase(FILE_DEVICE_NULL),
  82. SeedIoctlBase(FILE_DEVICE_PARALLEL_PORT),
  83. SeedIoctlBase(FILE_DEVICE_PHYSICAL_NETCARD),
  84. SeedIoctlBase(FILE_DEVICE_PRINTER),
  85. SeedIoctlBase(FILE_DEVICE_SCANNER),
  86. SeedIoctlBase(FILE_DEVICE_SERIAL_MOUSE_PORT),
  87. SeedIoctlBase(FILE_DEVICE_SERIAL_PORT),
  88. SeedIoctlBase(FILE_DEVICE_SCREEN),
  89. SeedIoctlBase(FILE_DEVICE_SOUND),
  90. SeedIoctlBase(FILE_DEVICE_STREAMS),
  91. SeedIoctlBase(FILE_DEVICE_TAPE),
  92. SeedIoctlBase(FILE_DEVICE_TAPE_FILE_SYSTEM),
  93. SeedIoctlBase(FILE_DEVICE_TRANSPORT),
  94. SeedIoctlBase(FILE_DEVICE_UNKNOWN),
  95. SeedIoctlBase(FILE_DEVICE_VIDEO),
  96. SeedIoctlBase(FILE_DEVICE_VIRTUAL_DISK),
  97. SeedIoctlBase(FILE_DEVICE_WAVE_IN),
  98. SeedIoctlBase(FILE_DEVICE_WAVE_OUT),
  99. SeedIoctlBase(FILE_DEVICE_8042_PORT),
  100. SeedIoctlBase(FILE_DEVICE_NETWORK_REDIRECTOR),
  101. SeedIoctlBase(FILE_DEVICE_BATTERY),
  102. SeedIoctlBase(FILE_DEVICE_BUS_EXTENDER),
  103. SeedIoctlBase(FILE_DEVICE_MODEM),
  104. SeedIoctlBase(FILE_DEVICE_VDM),
  105. SeedIoctlBase(FILE_DEVICE_MASS_STORAGE),
  106. SeedIoctlBase(FILE_DEVICE_SMB),
  107. SeedIoctlBase(FILE_DEVICE_KS),
  108. SeedIoctlBase(FILE_DEVICE_CHANGER),
  109. SeedIoctlBase(FILE_DEVICE_SMARTCARD),
  110. SeedIoctlBase(FILE_DEVICE_ACPI),
  111. SeedIoctlBase(FILE_DEVICE_DVD),
  112. SeedIoctlBase(FILE_DEVICE_FULLSCREEN_VIDEO),
  113. SeedIoctlBase(FILE_DEVICE_DFS_FILE_SYSTEM),
  114. SeedIoctlBase(FILE_DEVICE_DFS_VOLUME),
  115. SeedIoctlBase(FILE_DEVICE_SERENUM),
  116. SeedIoctlBase(FILE_DEVICE_TERMSRV),
  117. SeedIoctlBase(FILE_DEVICE_KSEC),
  118. SeedIoctlBase(FILE_DEVICE_IMAPI),
  119. SeedIoctlBase(FILE_DEVICE_BURNENG),
  120. {NULL, 0}
  121. };
  122. //
  123. // max must subtract one null-termination
  124. //
  125. #define MAX_IOCTL_METHOD ((sizeof(TableIoctlMethod)/sizeof(IOCTL_METHOD)-1))
  126. #define MAX_IOCTL_ACCESS ((sizeof(TableIoctlAccess)/sizeof(IOCTL_ACCESS)-1))
  127. #define MAX_IOCTL_DEVICE_TYPE ((sizeof(TableIoctlDeviceType)/sizeof(IOCTL_DEVICE_TYPE)-1))
  128. //
  129. // seed all the ioctls from the sdk
  130. //
  131. #include "batclass.h"
  132. #include "dfsfsctl.h"
  133. #include "gameport.h"
  134. #include "hidclass.h"
  135. #include "mountmgr.h"
  136. #include "ntddbeep.h"
  137. #include "ntddbrow.h"
  138. #include "ntddcdrm.h"
  139. #include "ntddcdvd.h"
  140. #include "ntddchgr.h"
  141. #include "ntdddisk.h"
  142. #include "ntdddlc.h"
  143. #include "ntddfs.h"
  144. //#include "ntddip.h"
  145. #include "ntddjoy.h"
  146. #include "ntddkbd.h"
  147. #include "ntddksec.h"
  148. #include "ntddmodm.h"
  149. #include "ntddmou.h"
  150. #include "ntddmup.h"
  151. #include "ntddndis.h"
  152. #include "ntddnpfs.h"
  153. #include "ntddnull.h"
  154. #include "ntddpar.h"
  155. #include "ntddpcm.h"
  156. #include "ntddrdr.h"
  157. #include "ntddscsi.h"
  158. #include "ntddser.h"
  159. #include "ntddstor.h"
  160. #include "ntddstrm.h"
  161. #include "ntddtape.h"
  162. #include "ntddtdi.h"
  163. #include "ntddtx.h"
  164. #include "ntddvdeo.h"
  165. #include "ntddvdsk.h"
  166. #include "ntddvol.h"
  167. #include "scsiscan.h"
  168. #include "swenum.h"
  169. #include "usbioctl.h"
  170. #include "usbscan.h"
  171. #include "wdm.h"
  172. #include "winsmcrd.h"
  173. #include "wmistr.h"
  174. #include "wmiumkm.h"
  175. // #include "i2osmi.h" // can't find "I2OUtil.h"
  176. // #include "hydra\ica*" // bad definitions
  177. #include "sdkioctl.h"