This commit was generated by cvs2svn to compensate for changes in r10,
[reactos.git] / reactos / include / ddk / defines.h
index d7c662b..413e5af 100644 (file)
-/* GENERAL DEFINITIONS ****************************************************/\r
-\r
-#include <internal/hal/irq.h>\r
-\r
-\r
-\r
-/*\r
- * PURPOSE: Number of a thread priority levels\r
- */\r
-#define NR_PRIORITY_LEVELS (32)\r
-\r
-/*\r
- * PURPOSE: Type of queue to insert a work item in\r
- */\r
-enum\r
-{\r
-  CriticalWorkQueue,\r
-  DelayedWorkQueue,\r
-  HyperCriticalWorkQueue,\r
-};\r
-\r
-/*\r
- * Types of memory to allocate\r
- */\r
-enum\r
-{\r
-   NonPagedPool,\r
-   NonPagedPoolMustSucceed,\r
-   NonPagedPoolCacheAligned,\r
-   NonPagedPoolCacheAlignedMustS,\r
-   PagedPool,\r
-   PagedPoolCacheAligned,\r
-};\r
-\r
-/*\r
- * PURPOSE: Irp flags\r
- */\r
-enum\r
-{\r
-   /*\r
-    * Read any data from the actual backing media\r
-    */\r
-   IRP_NOCACHE,\r
-     \r
-   /*\r
-    * The I/O operation is performing paging\r
-    */\r
-   IRP_PAGING_IO,\r
-     \r
-   /*\r
-    * The IRP is for a mount operation\r
-    */\r
-   IRP_MOUNT_COMPLETION,\r
-     \r
-   /*\r
-    * The API expects synchronous behaviour\r
-    */\r
-   IRP_SYNCHRONOUS_API,\r
-     \r
-   /*\r
-    * The IRP is associated with a larger operation\r
-    */\r
-   IRP_ASSOCIATED_IRP,\r
-     \r
-   /*\r
-    * The AssociatedIrp.SystemBuffer field is valid\r
-    */\r
-   IRP_BUFFERED_IO,\r
-     \r
-   /*\r
-    * The system buffer was allocated from pool and should be deallocated \r
-    * by the I/O manager\r
-    */\r
-   IRP_DEALLOCATE_BUFFER,\r
-     \r
-   /*\r
-    * The IRP is for an input operation\r
-    */\r
-   IRP_INPUT_OPERATION,\r
-     \r
-   /*\r
-    * The paging operation should complete synchronously \r
-    */\r
-   IRP_SYNCHRONOUS_PAGING_IO,\r
-     \r
-   /*\r
-    * The IRP represents a filesystem create operation\r
-    */\r
-   IRP_CREATE_OPERATION,\r
-     \r
-   /*\r
-    * The IRP represents a filesystem read operation\r
-    */\r
-   IRP_READ_OPERATION,\r
-     \r
-   /*\r
-    * The IRP represents a filesystem write operation\r
-    */\r
-   IRP_WRITE_OPERATION,\r
-          \r
-   /*\r
-    * The IRP represents a filesystem close operation\r
-    */\r
-   IRP_CLOSE_OPERATION,\r
-     \r
-   /*\r
-    * Asynchronous behavior is advised but not required\r
-    */\r
-   IRP_DEFER_IO_COMPLETION,\r
-};\r
-\r
-/*\r
- * I/O operation flags\r
- */\r
-enum\r
-{\r
-   /*\r
-    * Force an access check even if opened in kernel mode\r
-    */\r
-   SL_FORCE_ACCESS_CHECK,\r
-     \r
-   /*\r
-    * The file being opened is a paging file\r
-    */\r
-   SL_OPEN_PAGING_FILE,\r
-     \r
-   SL_OPEN_TARGET_DIRECTORY,\r
-     \r
-   SL_CASE_SENSITIVE,\r
-     \r
-   SL_KEY_SPECIFIED,\r
-     \r
-   SL_OVERRIDE_VERIFY_VOLUME,\r
-     \r
-   SL_WRITE_THROUGH,\r
-     \r
-   SL_FT_SEQUENTIAL_WRITE,\r
-     \r
-   SL_FAIL_IMMEDIATELY,\r
-     \r
-   SL_EXCLUSIVE_LOCK,\r
-     \r
-   SL_RESTART_SCAN,\r
-     \r
-   SL_RETURN_SINGLE_ENTRY,\r
-     \r
-   SL_INDEX_SPECIFIED,\r
-     \r
-   SL_WATCH_TREE,\r
-     \r
-   SL_ALLOW_RAW_MOUNT,   \r
-};\r
-\r
-/*\r
- * Possible flags for the device object flags\r
- */\r
-enum\r
-{\r
-   DO_BUFFERED_IO = 0x1,\r
-   DO_DIRECT_IO   = 0x2,\r
-};\r
-\r
-/*\r
- * Possible status codes\r
- * FIXME: These may not be the actual values used by NT\r
- */\r
-enum\r
-{\r
-   STATUS_SUCCESS,\r
-   STATUS_INSUFFICIENT_RESOURCES,\r
-   STATUS_OBJECT_NAME_EXISTS,\r
-   STATUS_OBJECT_NAME_COLLISION,\r
-//   STATUS_DATATYPE_MISALIGNMENT,\r
-   STATUS_CTL_FILE_NOT_SUPPORTED,\r
-//   STATUS_ACCESS_VIOLATION,\r
-   STATUS_PORT_ALREADY_SET,\r
-   STATUS_SECTION_NOT_IMAGE,\r
-   STATUS_BAD_WORKING_SET_LIMIT,\r
-   STATUS_INCOMPATIBLE_FILE_MAP,\r
-   STATUS_HANDLE_NOT_WAITABLE,\r
-   STATUS_PORT_DISCONNECTED,\r
-   STATUS_NOT_LOCKED,\r
-   STATUS_NOT_MAPPED_VIEW,\r
-   STATUS_UNABLE_TO_FREE_VM,\r
-   STATUS_UNABLE_TO_DELETE_SECTION,\r
-   STATUS_MORE_PROCESSING_REQUIRED,\r
-   STATUS_INVALID_CID,\r
-   STATUS_BAD_INITIAL_STACK,\r
-   STATUS_INVALID_VOLUME_LABEL,\r
-   STATUS_SECTION_NOT_EXTENDED,\r
-   STATUS_NOT_MAPPED_DATA,\r
-   STATUS_INFO_LENGTH_MISMATCH,\r
-   STATUS_INVALID_INFO_CLASS,\r
-   STATUS_SUSPEND_COUNT_EXCEEDED,\r
-   STATUS_NOTIFY_ENUM_DIR,\r
-   STATUS_REGISTRY_RECOVERED,\r
-   STATUS_REGISTRY_IO_FAILED,\r
-   STATUS_KEY_DELETED,\r
-   STATUS_NO_LOG_SPACE,\r
-   STATUS_KEY_HAS_CHILDREN,\r
-   STATUS_CHILD_MUST_BE_VOLATILE,\r
-   STATUS_REGISTRY_CORRUPT,\r
-   STATUS_DLL_NOT_FOUND,\r
-   STATUS_DLL_INIT_FAILED,\r
-   STATUS_ORDINAL_NOT_FOUND,\r
-   STATUS_ENTRYPOINT_NOT_FOUND,\r
-//   STATUS_PENDING,\r
-   STATUS_MORE_ENTRIES,\r
-//   STATUS_INTEGER_OVERFLOW,\r
-   STATUS_BUFFER_OVERFLOW,\r
-   STATUS_NO_MORE_FILES,\r
-   STATUS_NO_INHERITANCE,\r
-   STATUS_NO_MORE_EAS,\r
-   STATUS_NO_MORE_ENTRIES,\r
-   STATUS_GUIDS_EXHAUSTED,\r
-   STATUS_AGENTS_EXHAUSTED,\r
-   STATUS_UNSUCCESSFUL,\r
-   STATUS_NOT_IMPLEMENTED,\r
-   STATUS_ILLEGAL_FUNCTION,\r
-//   STATUS_IN_PAGE_ERROR,\r
-   STATUS_PAGEFILE_QUOTA,\r
-   STATUS_COMMITMENT_LIMIT,\r
-   STATUS_SECTION_TOO_BIG,\r
-   RPC_NT_SS_IN_NULL_CONTEXT,\r
-   RPC_NT_INVALID_BINDING,\r
-//   STATUS_INVALID_HANDLE,\r
-   STATUS_OBJECT_FILE_MISMATCH,\r
-   STATUS_FILE_CLOSED,\r
-   STATUS_INVALID_PORT_HANDLE,\r
-   STATUS_NOT_COMMITTED,\r
-   STATUS_INVALID_PARAMETER,\r
-   STATUS_INVALID_PARAMETER_1,\r
-   STATUS_INVALID_PARAMETER_2,\r
-   STATUS_INVALID_PARAMETER_3,\r
-   STATUS_INVALID_PARAMETER_4,\r
-   STATUS_INVALID_PARAMETER_5,\r
-   STATUS_INVALID_PARAMETER_6,\r
-   STATUS_INVALID_PARAMETER_7,\r
-   STATUS_INVALID_PARAMETER_8,\r
-   STATUS_INVALID_PARAMETER_9,\r
-   STATUS_INVALID_PARAMETER_10,\r
-   STATUS_INVALID_PARAMETER_11,\r
-   STATUS_INVALID_PARAMETER_12,\r
-   STATUS_INVALID_PARAMETER_MAX,\r
-   STATUS_INVALID_PAGE_PROTECTION,\r
-   STATUS_RESOURCE_DATA_NOT_FOUND,\r
-   STATUS_RESOURCE_TYPE_NOT_FOUND,\r
-   STATUS_RESOURCE_NAME_NOT_FOUND,\r
-   STATUS_RESOURCE_LANG_NOT_FOUND,\r
-   STATUS_NO_SUCH_DEVICE,\r
-   STATUS_NO_SUCH_FILE,\r
-   STATUS_INVALID_DEVICE_REQUEST,\r
-   STATUS_END_OF_FILE,\r
-   STATUS_FILE_FORCED_CLOSED,\r
-   STATUS_WRONG_VOLUME,\r
-   STATUS_NO_MEDIA,\r
-   STATUS_NO_MEDIA_IN_DEVICE,\r
-   STATUS_NONEXISTENT_SECTOR,\r
-   STATUS_WORKING_SET_QUOTA,\r
-//   STATUS_NO_MEMORY,\r
-   STATUS_CONFLICTING_ADDRESS,\r
-   STATUS_INVALID_SYSTEM_SERVICE,\r
-   STATUS_THREAD_IS_TERMINATING,\r
-   STATUS_PROCESS_IS_TERMINATING,\r
-   STATUS_INVALID_LOCK_SEQUENCE,\r
-   STATUS_INVALID_VIEW_SIZE,\r
-   STATUS_ALREADY_COMMITTED,\r
-   STATUS_ACCESS_DENIED,\r
-   STATUS_FILE_IS_A_DIRECTORY,\r
-   STATUS_CANNOT_DELETE,\r
-   STATUS_INVALID_COMPUTER_NAME,\r
-   STATUS_FILE_DELETED,\r
-   STATUS_DELETE_PENDING,\r
-   STATUS_PORT_CONNECTION_REFUSED,\r
-   STATUS_NO_SUCH_PRIVILEGE,\r
-   STATUS_PRIVILEGE_NOT_HELD,\r
-   STATUS_CANNOT_IMPERSONATE,\r
-   STATUS_LOGON_FAILURE,\r
-   STATUS_ACCOUNT_RESTRICTION,\r
-   STATUS_INVALID_LOGON_HOURS,\r
-   STATUS_INVALID_WORKSTATION,\r
-   STATUS_BUFFER_TOO_SMALL,\r
-   STATUS_UNABLE_TO_DECOMMIT_VM,\r
-   STATUS_DISK_CORRUPT_ERROR,\r
-   STATUS_OBJECT_NAME_INVALID,\r
-   STATUS_OBJECT_NAME_NOT_FOUND,\r
-//   STATUS_OBJECT_NAME_COLLISION,\r
-   STATUS_OBJECT_PATH_INVALID,\r
-   STATUS_OBJECT_PATH_NOT_FOUND,\r
-   STATUS_DFS_EXIT_PATH_FOUND,\r
-   STATUS_OBJECT_PATH_SYNTAX_BAD,\r
-   STATUS_DATA_OVERRUN,\r
-   STATUS_DATA_LATE_ERROR,\r
-   STATUS_DATA_ERROR,\r
-   STATUS_CRC_ERROR,\r
-   STATUS_SHARING_VIOLATION,\r
-   STATUS_QUOTA_EXCEEDED,\r
-   STATUS_MUTANT_NOT_OWNED,\r
-   STATUS_SEMAPHORE_LIMIT_EXCEEDED,\r
-   STATUS_DISK_FULL,\r
-   STATUS_LOCK_NOT_GRANTED,\r
-};\r
-\r
-/*\r
- * Possible device types\r
- */\r
-enum\r
-{\r
-   /*\r
-    * Standard define types\r
-    */\r
-   FILE_DEVICE_BEEP,\r
-   FILE_DEVICE_CDROM,\r
-   FILE_DEVICE_CONTROLLER,\r
-   FILE_DEVICE_DISK,\r
-   FILE_DEVICE_INPORT_PORT,\r
-   FILE_DEVICE_KEYBOARD,\r
-   FILE_DEVICE_MIDI_IN,\r
-   FILE_DEVICE_MIDI_OUT,\r
-   FILE_DEVICE_MOUSE,\r
-   FILE_DEVICE_NULL,\r
-   FILE_DEVICE_PARALLEL_PORT,\r
-   FILE_DEVICE_PRINTER,\r
-   FILE_DEVICE_SCANNER,\r
-   FILE_DEVICE_SERIAL_MOUSE_PORT,\r
-   FILE_DEVICE_SERIAL_PORT,\r
-   FILE_DEVICE_SCREEN,\r
-   FILE_DEVICE_TAPE,\r
-   FILE_DEVICE_UNKNOWN,\r
-   FILE_DEVICE_VIDEO,\r
-   FILE_DEVICE_VIRTUAL_DISK,\r
-   FILE_DEVICE_WAVE_IN,\r
-   FILE_DEVICE_WAVE_OUT,\r
-   FILE_DEVICE_8042_PORT,\r
-     \r
-   /*\r
-    * Values beyond this are reserved for ISVs\r
-    */\r
-   FILE_DEVICE_FIRST_FREE = 32768\r
-};\r
-\r
-\r
-\r
-/*\r
- * Possible device characteristics\r
- */\r
-enum\r
-{\r
-   FILE_REMOVABLE_MEDIA  = 0x1,\r
-   FILE_READ_ONLY_DEVICE = 0x2,\r
-   FILE_FLOPPY_DISKETTE  = 0x4,\r
-   FILE_WRITE_ONCE_MEDIA = 0x8,\r
-   FILE_REMOTE_DEVICE    = 0x10,\r
-};\r
-\r
-/*\r
- * PURPOSE: Bus types\r
- */\r
-enum\r
-{\r
-   Internal,\r
-   Isa,\r
-   MicroChannel,\r
-   TurboChannel,\r
-   PCIBus,\r
-   MaximumInterfaceType,\r
-};\r
-   \r
-/*\r
- * This is a list of bug check types (not MS's)\r
- */\r
-enum\r
-{\r
-   KBUG_NONE,\r
-   KBUG_ORPHANED_IRP,\r
-   KBUG_IO_STACK_OVERFLOW,\r
-   KBUG_OUT_OF_MEMORY,\r
-   KBUG_POOL_FREE_LIST_CORRUPT,\r
-     \r
-   /*\r
-    * These are well known but the actual value is unknown\r
-    */\r
-   NO_PAGES_AVAILABLE,\r
-     \r
-   /*\r
-    * These are well known (MS) bug types\r
-    * (Reference: NT Insider 1997 - http://www.osr.com)\r
-    */\r
-   IRQL_NOT_LESS_OR_EQUAL = 0xa,\r
-   KMODE_EXCEPTION_NOT_HANDLED = 0x1e,\r
-   UNEXPECTED_KERNEL_MODE_TRAP = 0x7f,\r
-   PAGE_FAULT_IN_NON_PAGED_AREA = 0x50,\r
-};\r
-\r
-/*\r
- * PURPOSE: Object attributes\r
- */\r
-enum\r
-{\r
-   OBJ_INHERIT = 0x1,\r
-   OBJ_PERMANENT = 0x2,\r
-   OBJ_EXCLUSIVE = 0x4,\r
-   OBJ_CASE_INSENSITIVE = 0x8,\r
-   OBJ_OPENIF = 0x10,\r
-};\r
-\r
-/*\r
- * PURPOSE: DPC priorities\r
- */\r
-enum\r
-{\r
-   High,\r
-   Medium,\r
-   Low,\r
-};\r
-\r
-/*\r
- * PURPOSE: Timer types\r
- */\r
-enum\r
-  {\r
-      NotificationTimer,\r
-      SynchronizationTimer,      \r
-  };\r
-   \r
-/*\r
- * PURPOSE: Some drivers use these\r
- */\r
-#define IN\r
-#define OUT\r
-#define OPTIONAL\r
-\r
-/*\r
- * PURPOSE: Power IRP minor function numbers\r
- */\r
-enum\r
-{\r
-   IRP_MN_QUERY_POWER,\r
-   IRP_MN_SET_POWER,\r
-   IRP_MN_WAIT_WAKE,\r
-   IRP_MN_QUERY_CAPABILITIES,\r
-   IRP_MN_POWER_SEQUENCE,\r
-};\r
-\r
-/*\r
- * FIXME: These are not in the correct order\r
- */\r
-enum\r
-{  \r
-     IRP_MJ_CREATE,\r
-     IRP_MJ_CREATE_NAMED_PIPE,\r
-     IRP_MJ_CLOSE,\r
-     IRP_MJ_READ,\r
-     IRP_MJ_WRITE,\r
-     IRP_MJ_QUERY_INFORMATION,\r
-     IRP_MJ_SET_INFORMATION,\r
-     IRP_MJ_QUERY_EA,\r
-     IRP_MJ_SET_EA,\r
-     IRP_MJ_FLUSH_BUFFERS,\r
-     IRP_MJ_QUERY_VOLUME_INFORMATION,\r
-     IRP_MJ_SET_VOLUME_INFORMATION,\r
-     IRP_MJ_DIRECTORY_CONTROL,\r
-     IRP_MJ_FILE_SYSTEM_CONTROL,     \r
-     IRP_MJ_DEVICE_CONTROL,\r
-     IRP_MJ_INTERNAL_DEVICE_CONTROL,\r
-     IRP_MJ_SHUTDOWN,\r
-     IRP_MJ_LOCK_CONTROL,\r
-     IRP_MJ_CLEANUP,\r
-     IRP_MJ_CREATE_MAILSLOT,\r
-     IRP_MJ_QUERY_SECURITY,\r
-     IRP_MJ_SET_SECURITY,\r
-     IRP_MJ_QUERY_POWER,\r
-     IRP_MJ_SET_POWER,\r
-     IRP_MJ_DEVICE_CHANGE,\r
-     IRP_MJ_QUERY_QUOTA,\r
-     IRP_MJ_SET_QUOTA,\r
-     IRP_MJ_PNP_POWER,\r
-     IRP_MJ_MAXIMUM_FUNCTION,\r
-};\r
-\r
-/*\r
- * PURPOSE: Used all over\r
- */\r
-enum\r
-{\r
-   KernelMode,\r
-   UserMode,\r
-};\r
-   \r
-/*\r
- * PURPOSE: Arguments to MmProbeAndLockPages\r
- */\r
-enum\r
-{\r
-   IoReadAccess,\r
-   IoWriteAccess,\r
-   IoModifyAccess,\r
-};\r
-\r
-#define MAXIMUM_VOLUME_LABEL_LENGTH (32)\r
-\r
-/*\r
- * IRQ levels\r
- */\r
-enum\r
-{\r
-   PASSIVE_LEVEL,\r
-     \r
-   /*\r
-    * Which order for these (only DISPATCH_LEVEL is important for now)\r
-    */\r
-   APC_LEVEL,\r
-   DISPATCH_LEVEL,\r
-     \r
-   /*\r
-    * Above here are device specific IRQ levels\r
-    */\r
-   FIRST_DEVICE_SPECIFIC_LEVEL,\r
-   HIGH_LEVEL = FIRST_DEVICE_SPECIFIC_LEVEL + NR_DEVICE_SPECIFIC_LEVELS,\r
-};\r
-  \r
+/* GENERAL DEFINITIONS ****************************************************/
+
+#include <internal/hal/irq.h>
+
+#include <ddk/kedef.h> 
+#include <ddk/iodef.h>
+
+/*
+ * PURPOSE: Number of a thread priority levels
+ */
+#define NR_PRIORITY_LEVELS (32)
+
+/*
+ * PURPOSE: Type of queue to insert a work item in
+ */
+enum
+{
+  CriticalWorkQueue,
+  DelayedWorkQueue,
+  HyperCriticalWorkQueue,
+};
+
+/*
+ * Types of memory to allocate
+ */
+enum
+{
+   NonPagedPool,
+   NonPagedPoolMustSucceed,
+   NonPagedPoolCacheAligned,
+   NonPagedPoolCacheAlignedMustS,
+   PagedPool,
+   PagedPoolCacheAligned,
+};
+
+/*
+ * Possible status codes
+ * FIXME: These may not be the actual values used by NT
+ */
+enum
+{
+   STATUS_SUCCESS,
+   STATUS_INSUFFICIENT_RESOURCES,
+   STATUS_OBJECT_NAME_EXISTS,
+   STATUS_OBJECT_NAME_COLLISION,
+//   STATUS_DATATYPE_MISALIGNMENT,
+   STATUS_CTL_FILE_NOT_SUPPORTED,
+//   STATUS_ACCESS_VIOLATION,
+   STATUS_PORT_ALREADY_SET,
+   STATUS_SECTION_NOT_IMAGE,
+   STATUS_BAD_WORKING_SET_LIMIT,
+   STATUS_INCOMPATIBLE_FILE_MAP,
+   STATUS_HANDLE_NOT_WAITABLE,
+   STATUS_PORT_DISCONNECTED,
+   STATUS_NOT_LOCKED,
+   STATUS_NOT_MAPPED_VIEW,
+   STATUS_UNABLE_TO_FREE_VM,
+   STATUS_UNABLE_TO_DELETE_SECTION,
+   STATUS_MORE_PROCESSING_REQUIRED,
+   STATUS_INVALID_CID,
+   STATUS_BAD_INITIAL_STACK,
+   STATUS_INVALID_VOLUME_LABEL,
+   STATUS_SECTION_NOT_EXTENDED,
+   STATUS_NOT_MAPPED_DATA,
+   STATUS_INFO_LENGTH_MISMATCH,
+   STATUS_INVALID_INFO_CLASS,
+   STATUS_SUSPEND_COUNT_EXCEEDED,
+   STATUS_NOTIFY_ENUM_DIR,
+   STATUS_REGISTRY_RECOVERED,
+   STATUS_REGISTRY_IO_FAILED,
+   STATUS_KEY_DELETED,
+   STATUS_NO_LOG_SPACE,
+   STATUS_KEY_HAS_CHILDREN,
+   STATUS_CHILD_MUST_BE_VOLATILE,
+   STATUS_REGISTRY_CORRUPT,
+   STATUS_DLL_NOT_FOUND,
+   STATUS_DLL_INIT_FAILED,
+   STATUS_ORDINAL_NOT_FOUND,
+   STATUS_ENTRYPOINT_NOT_FOUND,
+//   STATUS_PENDING,
+   STATUS_MORE_ENTRIES,
+//   STATUS_INTEGER_OVERFLOW,
+   STATUS_BUFFER_OVERFLOW,
+   STATUS_NO_MORE_FILES,
+   STATUS_NO_INHERITANCE,
+   STATUS_NO_MORE_EAS,
+   STATUS_NO_MORE_ENTRIES,
+   STATUS_GUIDS_EXHAUSTED,
+   STATUS_AGENTS_EXHAUSTED,
+   STATUS_UNSUCCESSFUL,
+   STATUS_NOT_IMPLEMENTED,
+   STATUS_ILLEGAL_FUNCTION,
+//   STATUS_IN_PAGE_ERROR,
+   STATUS_PAGEFILE_QUOTA,
+   STATUS_COMMITMENT_LIMIT,
+   STATUS_SECTION_TOO_BIG,
+   RPC_NT_SS_IN_NULL_CONTEXT,
+   RPC_NT_INVALID_BINDING,
+//   STATUS_INVALID_HANDLE,
+   STATUS_OBJECT_FILE_MISMATCH,
+   STATUS_FILE_CLOSED,
+   STATUS_INVALID_PORT_HANDLE,
+   STATUS_NOT_COMMITTED,
+   STATUS_INVALID_PARAMETER,
+   STATUS_INVALID_PARAMETER_1,
+   STATUS_INVALID_PARAMETER_2,
+   STATUS_INVALID_PARAMETER_3,
+   STATUS_INVALID_PARAMETER_4,
+   STATUS_INVALID_PARAMETER_5,
+   STATUS_INVALID_PARAMETER_6,
+   STATUS_INVALID_PARAMETER_7,
+   STATUS_INVALID_PARAMETER_8,
+   STATUS_INVALID_PARAMETER_9,
+   STATUS_INVALID_PARAMETER_10,
+   STATUS_INVALID_PARAMETER_11,
+   STATUS_INVALID_PARAMETER_12,
+   STATUS_INVALID_PARAMETER_MAX,
+   STATUS_INVALID_PAGE_PROTECTION,
+   STATUS_RESOURCE_DATA_NOT_FOUND,
+   STATUS_RESOURCE_TYPE_NOT_FOUND,
+   STATUS_RESOURCE_NAME_NOT_FOUND,
+   STATUS_RESOURCE_LANG_NOT_FOUND,
+   STATUS_NO_SUCH_DEVICE,
+   STATUS_NO_SUCH_FILE,
+   STATUS_INVALID_DEVICE_REQUEST,
+   STATUS_END_OF_FILE,
+   STATUS_FILE_FORCED_CLOSED,
+   STATUS_WRONG_VOLUME,
+   STATUS_NO_MEDIA,
+   STATUS_NO_MEDIA_IN_DEVICE,
+   STATUS_NONEXISTENT_SECTOR,
+   STATUS_WORKING_SET_QUOTA,
+//   STATUS_NO_MEMORY,
+   STATUS_CONFLICTING_ADDRESS,
+   STATUS_INVALID_SYSTEM_SERVICE,
+   STATUS_THREAD_IS_TERMINATING,
+   STATUS_PROCESS_IS_TERMINATING,
+   STATUS_INVALID_LOCK_SEQUENCE,
+   STATUS_INVALID_VIEW_SIZE,
+   STATUS_ALREADY_COMMITTED,
+   STATUS_ACCESS_DENIED,
+   STATUS_FILE_IS_A_DIRECTORY,
+   STATUS_CANNOT_DELETE,
+   STATUS_INVALID_COMPUTER_NAME,
+   STATUS_FILE_DELETED,
+   STATUS_DELETE_PENDING,
+   STATUS_PORT_CONNECTION_REFUSED,
+   STATUS_NO_SUCH_PRIVILEGE,
+   STATUS_PRIVILEGE_NOT_HELD,
+   STATUS_CANNOT_IMPERSONATE,
+   STATUS_LOGON_FAILURE,
+   STATUS_ACCOUNT_RESTRICTION,
+   STATUS_INVALID_LOGON_HOURS,
+   STATUS_INVALID_WORKSTATION,
+   STATUS_BUFFER_TOO_SMALL,
+   STATUS_UNABLE_TO_DECOMMIT_VM,
+   STATUS_DISK_CORRUPT_ERROR,
+   STATUS_OBJECT_NAME_INVALID,
+   STATUS_OBJECT_NAME_NOT_FOUND,
+//   STATUS_OBJECT_NAME_COLLISION,
+   STATUS_OBJECT_PATH_INVALID,
+   STATUS_OBJECT_PATH_NOT_FOUND,
+   STATUS_DFS_EXIT_PATH_FOUND,
+   STATUS_OBJECT_PATH_SYNTAX_BAD,
+   STATUS_DATA_OVERRUN,
+   STATUS_DATA_LATE_ERROR,
+   STATUS_DATA_ERROR,
+   STATUS_CRC_ERROR,
+   STATUS_SHARING_VIOLATION,
+   STATUS_QUOTA_EXCEEDED,
+   STATUS_MUTANT_NOT_OWNED,
+   STATUS_SEMAPHORE_LIMIT_EXCEEDED,
+   STATUS_DISK_FULL,
+   STATUS_LOCK_NOT_GRANTED,
+     
+   STATUS_DEVICE_NOT_READY,
+   STATUS_IO_TIMEOUT,
+   STATUS_MEDIA_WRITE_PROTECTED,
+   STATUS_NO_MEDIA_IN_DRIVE,
+   STATUS_VERIFY_REQUIRED,
+   STATUS_UNRECOGNIZED_MEDIA,
+//   STATUS_WRONG_VOLUME,
+};
+   
+/*
+ * This is a list of bug check types (not MS's)
+ */
+enum
+{
+   APC_INDEX_MISMATCH = 1,
+   DEVICE_QUEUE_NOT_BUSY,
+   INVALID_AFFINITY_SET,
+   INVALID_DATA_ACCESS_TRAP,
+   INVALID_PROCESS_ATTACH_ATTEMPT,
+   INVALID_PROCESS_DEATTACH_ATTEMPT,
+   INVALID_SOFTWARE_INTERRUPT,
+   IRQL_NOT_DISPATCH_LEVEL,
+   IRQL_NOT_GREATER_OR_EQUAL,
+   NO_EXCEPTION_HANDLING_SUPPORT,
+   MAXIMUM_WAIT_OBJECTS_EXCEEDED,
+   MUTEX_LEVEL_NUMBER_VIOLATION,
+   NO_USER_MODE_CONTEXT,
+   SPIN_LOCK_ALREADY_OWNED,
+   SPIN_LOCK_NOT_OWNED,
+   THREAD_NOT_MUTEX_OWNER,
+   TRAP_CAUSE_UNKNOWN,
+   EMPTY_THREAD_REAPER_LIST,
+   CREATE_DELETE_LOCK_NOT_LOCKED,
+   LAST_CHANCE_CALLED_FROM_KMODE,
+   CID_HANDLE_CREATION,
+   CID_HANDLE_DELETION,
+   REFERENCE_BY_POINTER,
+   BAD_POOL_HEADER,
+   MEMORY_MANAGMENT,
+   PFN_SHARE_COUNT,
+   PFN_REFERENCE_COUNT,
+   NO_SPIN_LOCK_AVAILABLE,
+   KMODE_EXCEPTION_NOT_HANDLED,
+   SHARED_RESOURCE_CONV_ERROR,
+   KERNEL_APC_PENDING_DURING_EXIT,
+   QUOTA_UNDERFLOW,
+   FILE_SYSTEM,
+   FAT_FILE_SYSTEM,
+   NTFS_FILE_SYSTEM,
+   NPFS_FILE_SYSTEM,
+   CDFS_FILE_SYSTEM,
+   RDR_FILE_SYSTEM,
+   CORRUPT_ACCESS_TOKEN,
+   SECURITY_SYSTEM,
+   INCONSISTENT_IRP,
+   PANIC_STACK_SWITCH,
+   PORT_DRIVER_INTERNAL,
+   SCSI_DISK_DRIVER_INTERNAL,
+   INSTRUCTION_BUS_ERROR,
+   SET_OF_INVALID_CONTEXT,
+   PHASE0_INITIALIZATION_FAILED,
+   PHASE1_INITIALIZATION_FAILED,
+   UNEXPECTED_INITIALIZATION_CALL,
+   CACHE_MANAGER,
+   NO_MORE_IRP_STACK_LOCATIONS,
+   DEVICE_REFERENCE_COUNT_NOT_ZERO,
+   FLOPPY_INTERNAL_ERROR,
+   SERIAL_DRIVER_INTERNAL,
+   SYSTEM_EXIT_OWNED_MUTEX,
+   SYSTEM_UNWIND_PREVIOUS_USER,
+   SYSTEN_SERVICE_EXCEPTION,
+   INTERRUPT_UNWIND_ATTEMPTED,
+   INTERRUPT_EXCEPTION_NOT_HANDLED,
+   MULTIPROCESSOR_CONFIGURATION_NOT_SUPPORTED,
+   NO_MORE_SYSTEM_PTES,
+   TARGET_MDL_TOO_SMALL,
+   MUST_SUCCEED_POOL_EMPTY,
+   ATDISK_DRIVER_INTERNAL,
+   NO_SUCH_PARTITION,
+   MULTIPLE_IRP_COMPLETE_REQUESTS,
+   INSUFFICENT_SYSTEM_MAP_PAGES,
+   DEREF_UNKNOWN_LOGON_SERVICE,
+   REF_UNKNOWN_LOGON_SERVICE,
+   CANCEL_STATE_IN_COMPLETED_IRP,
+   PAGE_FAULT_WITH_INTERRUPTS_OFF,
+   IRQL_GT_ZERO_AT_SYSTEM_SERVICE,
+   STREAMS_INTERNAL_ERROR,
+   FATAL_UNHANDLED_HARD_ERROR,
+   NO_PAGES_AVAILABLE,
+   PFN_LIST_CORRUPT,
+   NDIS_INTERNAL_ERROR,
+   PAGE_FAULT_IN_NONPAGED_AREA,
+   REGISTRY_ERROR,
+   MAILSLOT_FILE_SYSTEM,
+   NO_BOOT_DEVICE,
+   LM_SERVER_INTERNAL_ERROR,
+   DATA_COHERENCY_EXCEPTION,
+   INSTRUCTION_COHERENCY_EXCEPTION,
+   XNS_INTERNAL_ERROR,
+   FTDISK_INTERNAL_ERROR,
+   PINBALL_FILE_SYSTEM,
+   CRITICAL_SERVICE_FAILED,
+   SET_ENV_VAR_FAILED,
+   HAL_INITIALIZED_FAILED,
+   UNSUPPORTED_PROCESSOR,
+   OBJECT_INITIALIZATION_FAILED,
+   SECURITY_INITIALIZATION_FAILED,
+   PROCESS_INITIALIZATION_FAILED,
+   HAL1_INITIALIZATION_FAILED,   
+};
+enum
+{
+   KBUG_NONE,
+   KBUG_ORPHANED_IRP,
+   KBUG_IO_STACK_OVERFLOW,
+   KBUG_OUT_OF_MEMORY,
+   KBUG_POOL_FREE_LIST_CORRUPT,
+     
+   /*
+    * These are well known but the actual value is unknown
+    */
+//   NO_PAGES_AVAILABLE,
+     
+   /*
+    * These are well known (MS) bug types
+    * (Reference: NT Insider 1997 - http://www.osr.com)
+    */
+   IRQL_NOT_LESS_OR_EQUAL = 0xa,
+//   KMODE_EXCEPTION_NOT_HANDLED = 0x1e,
+   UNEXPECTED_KERNEL_MODE_TRAP = 0x7f,
+   PAGE_FAULT_IN_NON_PAGED_AREA = 0x50,
+};
+
+/*
+ * PURPOSE: Object attributes
+ */
+enum
+{
+   OBJ_INHERIT = 0x1,
+   OBJ_PERMANENT = 0x2,
+   OBJ_EXCLUSIVE = 0x4,
+   OBJ_CASE_INSENSITIVE = 0x8,
+   OBJ_OPENIF = 0x10,
+};
+
+/*
+ * PURPOSE: DPC priorities
+ */
+enum
+{
+   High,
+   Medium,
+   Low,
+};
+
+/*
+ * PURPOSE: Timer types
+ */
+enum
+  {
+      NotificationTimer,
+      SynchronizationTimer,      
+  };
+   
+/*
+ * PURPOSE: Some drivers use these
+ */
+#define IN
+#define OUT
+#define OPTIONAL
+
+/*
+ * PURPOSE: Power IRP minor function numbers
+ */
+enum
+{
+   IRP_MN_QUERY_POWER,
+   IRP_MN_SET_POWER,
+   IRP_MN_WAIT_WAKE,
+   IRP_MN_QUERY_CAPABILITIES,
+   IRP_MN_POWER_SEQUENCE,
+};
+
+/*
+ * PURPOSE: Used all over
+ */
+enum
+{
+   KernelMode,
+   UserMode,
+};
+   
+/*
+ * PURPOSE: Arguments to MmProbeAndLockPages
+ */
+enum
+{
+   IoReadAccess,
+   IoWriteAccess,
+   IoModifyAccess,
+};
+
+#define MAXIMUM_VOLUME_LABEL_LENGTH (32)
+
+/*
+ * IRQ levels
+ */
+enum
+{
+   PASSIVE_LEVEL,
+     
+   /*
+    * Which order for these (only DISPATCH_LEVEL is important for now)
+    */
+   APC_LEVEL,
+   DISPATCH_LEVEL,
+     
+   /*
+    * Above here are device specific IRQ levels
+    */
+   FIRST_DEVICE_SPECIFIC_LEVEL,
+   HIGH_LEVEL = FIRST_DEVICE_SPECIFIC_LEVEL + NR_DEVICE_SPECIFIC_LEVELS,
+};
+