ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

iotypes.h
Go to the documentation of this file.
00001 /*++ NDK Version: 0098
00002 
00003 Copyright (c) Alex Ionescu.  All rights reserved.
00004 
00005 Header Name:
00006 
00007     iotypes.h
00008 
00009 Abstract:
00010 
00011     Type definitions for the I/O Manager.
00012 
00013 Author:
00014 
00015     Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
00016 
00017 --*/
00018 #ifndef _IOTYPES_H
00019 #define _IOTYPES_H
00020 
00021 //
00022 // Dependencies
00023 //
00024 #include <umtypes.h>
00025 #include <ifssupp.h>
00026 #include <potypes.h>
00027 
00028 //
00029 // I/O Completion Access Rights
00030 //
00031 #define IO_COMPLETION_QUERY_STATE               0x0001
00032 #ifndef NTOS_MODE_USER
00033 #define IO_COMPLETION_MODIFY_STATE              0x0002
00034 #define IO_COMPLETION_ALL_ACCESS                (STANDARD_RIGHTS_REQUIRED | \
00035                                                  SYNCHRONIZE | \
00036                                                  0x3)
00037 
00038 //
00039 // Kernel Exported Object Types
00040 //
00041 extern POBJECT_TYPE NTSYSAPI IoAdapterObjectType;
00042 extern POBJECT_TYPE NTSYSAPI IoDeviceHandlerObjectType;
00043 extern POBJECT_TYPE NTSYSAPI IoDeviceObjectType;
00044 extern POBJECT_TYPE NTSYSAPI IoDriverObjectType;
00045 
00046 #else
00047 
00048 //
00049 // Symbolic Link Access Rights
00050 //
00051 #define SYMBOLIC_LINK_QUERY                     0x0001
00052 #define SYMBOLIC_LINK_ALL_ACCESS                STANDARD_RIGHTS_REQUIRED | 0x0001
00053 #endif
00054 
00055 //
00056 // NtCreateFile Result Flags
00057 //
00058 #define FILE_SUPERSEDED                         0x00000000
00059 #define FILE_OPENED                             0x00000001
00060 #define FILE_CREATED                            0x00000002
00061 #define FILE_OVERWRITTEN                        0x00000003
00062 #define FILE_EXISTS                             0x00000004
00063 #define FILE_DOES_NOT_EXIST                     0x00000005
00064 
00065 //
00066 // Pipe Flags
00067 //
00068 #define FILE_PIPE_BYTE_STREAM_TYPE              0x00000000
00069 #define FILE_PIPE_MESSAGE_TYPE                  0x00000001
00070 #define FILE_PIPE_BYTE_STREAM_MODE              0x00000000
00071 #define FILE_PIPE_MESSAGE_MODE                  0x00000001
00072 #define FILE_PIPE_QUEUE_OPERATION               0x00000000
00073 #define FILE_PIPE_COMPLETE_OPERATION            0x00000001
00074 #define FILE_PIPE_INBOUND                       0x00000000
00075 #define FILE_PIPE_OUTBOUND                      0x00000001
00076 #define FILE_PIPE_FULL_DUPLEX                   0x00000002
00077 #define FILE_PIPE_CLIENT_END                    0x00000000
00078 #define FILE_PIPE_SERVER_END                    0x00000001
00079 
00080 //
00081 // NtCreateFile Attributes
00082 //
00083 #define FILE_ATTRIBUTE_VALID_FLAGS              0x00007fb7
00084 #define FILE_ATTRIBUTE_VALID_SET_FLAGS          0x000031a7
00085 
00086 //
00087 // NtCreateFile OpenType Flags
00088 //
00089 #define FILE_SUPERSEDE                          0x00000000
00090 #define FILE_OPEN                               0x00000001
00091 #define FILE_CREATE                             0x00000002
00092 #define FILE_OPEN_IF                            0x00000003
00093 #define FILE_OVERWRITE                          0x00000004
00094 #define FILE_OVERWRITE_IF                       0x00000005
00095 #define FILE_MAXIMUM_DISPOSITION                0x00000005
00096 
00097 //
00098 // NtCreateFile Flags
00099 //
00100 #define FILE_DIRECTORY_FILE                     0x00000001
00101 #define FILE_WRITE_THROUGH                      0x00000002
00102 #define FILE_SEQUENTIAL_ONLY                    0x00000004
00103 #define FILE_NO_INTERMEDIATE_BUFFERING          0x00000008
00104 #define FILE_SYNCHRONOUS_IO_ALERT               0x00000010
00105 #define FILE_SYNCHRONOUS_IO_NONALERT            0x00000020
00106 #define FILE_NON_DIRECTORY_FILE                 0x00000040
00107 #define FILE_CREATE_TREE_CONNECTION             0x00000080
00108 #define FILE_COMPLETE_IF_OPLOCKED               0x00000100
00109 #define FILE_NO_EA_KNOWLEDGE                    0x00000200
00110 #define FILE_OPEN_REMOTE_INSTANCE               0x00000400
00111 #define FILE_RANDOM_ACCESS                      0x00000800
00112 #define FILE_DELETE_ON_CLOSE                    0x00001000
00113 #define FILE_OPEN_BY_FILE_ID                    0x00002000
00114 #define FILE_OPEN_FOR_BACKUP_INTENT             0x00004000
00115 #define FILE_NO_COMPRESSION                     0x00008000
00116 #define FILE_RESERVE_OPFILTER                   0x00100000
00117 #define FILE_OPEN_REPARSE_POINT                 0x00200000
00118 #define FILE_OPEN_NO_RECALL                     0x00400000
00119 #define FILE_OPEN_FOR_FREE_SPACE_QUERY          0x00800000
00120 
00121 //
00122 // Device Charactertics
00123 //
00124 #define FILE_REMOVABLE_MEDIA                    0x00000001
00125 #define FILE_READ_ONLY_DEVICE                   0x00000002
00126 #define FILE_FLOPPY_DISKETTE                    0x00000004
00127 #define FILE_WRITE_ONCE_MEDIA                   0x00000008
00128 #define FILE_REMOTE_DEVICE                      0x00000010
00129 #define FILE_DEVICE_IS_MOUNTED                  0x00000020
00130 #define FILE_VIRTUAL_VOLUME                     0x00000040
00131 #define FILE_AUTOGENERATED_DEVICE_NAME          0x00000080
00132 #define FILE_DEVICE_SECURE_OPEN                 0x00000100
00133 
00134 //
00135 // File Object Flags
00136 //
00137 #define FO_FILE_OBJECT_HAS_EXTENSION            0x00800000
00138 
00139 //
00140 // Device Object Extension Flags
00141 //
00142 #define DOE_UNLOAD_PENDING                      0x1
00143 #define DOE_DELETE_PENDING                      0x2
00144 #define DOE_REMOVE_PENDING                      0x4
00145 #define DOE_REMOVE_PROCESSED                    0x8
00146 #define DOE_START_PENDING                       0x10
00147 
00148 //
00149 // Device Object StartIo Flags
00150 //
00151 #define DOE_SIO_NO_KEY                          0x20
00152 #define DOE_SIO_WITH_KEY                        0x40
00153 #define DOE_SIO_CANCELABLE                      0x80
00154 #define DOE_SIO_DEFERRED                        0x100
00155 #define DOE_SIO_NO_CANCEL                       0x200
00156 
00157 //
00158 // Device Node Flags
00159 //
00160 #define DNF_PROCESSED                           0x00000001
00161 #define DNF_STARTED                             0x00000002
00162 #define DNF_START_FAILED                        0x00000004
00163 #define DNF_ENUMERATED                          0x00000008
00164 #define DNF_DELETED                             0x00000010
00165 #define DNF_MADEUP                              0x00000020
00166 #define DNF_START_REQUEST_PENDING               0x00000040
00167 #define DNF_NO_RESOURCE_REQUIRED                0x00000080
00168 #define DNF_INSUFFICIENT_RESOURCES              0x00000100
00169 #define DNF_RESOURCE_ASSIGNED                   0x00000200
00170 #define DNF_RESOURCE_REPORTED                   0x00000400
00171 #define DNF_HAL_NODE                            0x00000800 // ???
00172 #define DNF_ADDED                               0x00001000
00173 #define DNF_ADD_FAILED                          0x00002000
00174 #define DNF_LEGACY_DRIVER                       0x00004000
00175 #define DNF_STOPPED                             0x00008000
00176 #define DNF_WILL_BE_REMOVED                     0x00010000
00177 #define DNF_NEED_TO_ENUM                        0x00020000
00178 #define DNF_NOT_CONFIGURED                      0x00040000
00179 #define DNF_REINSTALL                           0x00080000
00180 #define DNF_RESOURCE_REQUIREMENTS_NEED_FILTERED 0x00100000 // ???
00181 #define DNF_DISABLED                            0x00200000
00182 #define DNF_RESTART_OK                          0x00400000
00183 #define DNF_NEED_RESTART                        0x00800000
00184 #define DNF_VISITED                             0x01000000
00185 #define DNF_ASSIGNING_RESOURCES                 0x02000000
00186 #define DNF_BEEING_ENUMERATED                   0x04000000
00187 #define DNF_NEED_ENUMERATION_ONLY               0x08000000
00188 #define DNF_LOCKED                              0x10000000
00189 #define DNF_HAS_BOOT_CONFIG                     0x20000000
00190 #define DNF_BOOT_CONFIG_RESERVED                0x40000000
00191 #define DNF_HAS_PROBLEM                         0x80000000 // ???
00192 
00193 //
00194 // Device Node User Flags
00195 //
00196 #define DNUF_DONT_SHOW_IN_UI                    0x0002
00197 #define DNUF_NOT_DISABLEABLE                    0x0008
00198 
00199 //
00200 // Internal Option Flags
00201 //
00202 #define IO_ATTACH_DEVICE_API                    0x80000000
00203 
00204 //
00205 // Undocumented WMI Registration Flags
00206 //
00207 #define WMIREG_FLAG_TRACE_PROVIDER              0x00010000
00208 #define WMIREG_FLAG_TRACE_NOTIFY_MASK           0x00F00000
00209 #define WMIREG_NOTIFY_DISK_IO                   0x00100000
00210 #define WMIREG_NOTIFY_TDI_IO                    0x00200000
00211 
00212 //
00213 // I/O Completion Information Class for NtQueryIoCompletionInformation
00214 //
00215 typedef enum _IO_COMPLETION_INFORMATION_CLASS
00216 {
00217     IoCompletionBasicInformation
00218 } IO_COMPLETION_INFORMATION_CLASS;
00219 
00220 #ifdef NTOS_MODE_USER
00221 
00222 //
00223 // Hardware Interface Type
00224 //
00225 typedef enum _INTERFACE_TYPE
00226 {
00227     InterfaceTypeUndefined = -1,
00228     Internal,
00229     Isa,
00230     Eisa,
00231     MicroChannel,
00232     TurboChannel,
00233     PCIBus,
00234     VMEBus,
00235     NuBus,
00236     PCMCIABus,
00237     CBus,
00238     MPIBus,
00239     MPSABus,
00240     ProcessorInternal,
00241     InternalPowerBus,
00242     PNPISABus,
00243     PNPBus,
00244     MaximumInterfaceType
00245 }INTERFACE_TYPE, *PINTERFACE_TYPE;
00246 
00247 typedef enum _BUS_DATA_TYPE
00248 {
00249     ConfigurationSpaceUndefined = -1,
00250     Cmos,
00251     EisaConfiguration,
00252     Pos,
00253     CbusConfiguration,
00254     PCIConfiguration,
00255     VMEConfiguration,
00256     NuBusConfiguration,
00257     PCMCIAConfiguration,
00258     MPIConfiguration,
00259     MPSAConfiguration,
00260     PNPISAConfiguration,
00261     SgiInternalConfiguration,
00262     MaximumBusDataType
00263 } BUS_DATA_TYPE, *PBUS_DATA_TYPE;
00264 
00265 //
00266 // File Information Classes for NtQueryInformationFile
00267 //
00268 typedef enum _FILE_INFORMATION_CLASS
00269 {
00270     FileDirectoryInformation = 1,
00271     FileFullDirectoryInformation,
00272     FileBothDirectoryInformation,
00273     FileBasicInformation,
00274     FileStandardInformation,
00275     FileInternalInformation,
00276     FileEaInformation,
00277     FileAccessInformation,
00278     FileNameInformation,
00279     FileRenameInformation,
00280     FileLinkInformation,
00281     FileNamesInformation,
00282     FileDispositionInformation,
00283     FilePositionInformation,
00284     FileFullEaInformation,
00285     FileModeInformation,
00286     FileAlignmentInformation,
00287     FileAllInformation,
00288     FileAllocationInformation,
00289     FileEndOfFileInformation,
00290     FileAlternateNameInformation,
00291     FileStreamInformation,
00292     FilePipeInformation,
00293     FilePipeLocalInformation,
00294     FilePipeRemoteInformation,
00295     FileMailslotQueryInformation,
00296     FileMailslotSetInformation,
00297     FileCompressionInformation,
00298     FileObjectIdInformation,
00299     FileCompletionInformation,
00300     FileMoveClusterInformation,
00301     FileQuotaInformation,
00302     FileReparsePointInformation,
00303     FileNetworkOpenInformation,
00304     FileAttributeTagInformation,
00305     FileTrackingInformation,
00306     FileIdBothDirectoryInformation,
00307     FileIdFullDirectoryInformation,
00308     FileValidDataLengthInformation,
00309     FileShortNameInformation,
00310     FileMaximumInformation
00311 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
00312 
00313 //
00314 // File Information Classes for NtQueryInformationFileSystem
00315 //
00316 typedef enum _FSINFOCLASS
00317 {
00318     FileFsVolumeInformation = 1,
00319     FileFsLabelInformation,
00320     FileFsSizeInformation,
00321     FileFsDeviceInformation,
00322     FileFsAttributeInformation,
00323     FileFsControlInformation,
00324     FileFsFullSizeInformation,
00325     FileFsObjectIdInformation,
00326     FileFsDriverPathInformation,
00327     FileFsMaximumInformation
00328 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
00329 
00330 #endif
00331 
00332 //
00333 // Dock Profile Status
00334 //
00335 typedef enum _PROFILE_STATUS
00336 {
00337     DOCK_NOTDOCKDEVICE,
00338     DOCK_QUIESCENT,
00339     DOCK_ARRIVING,
00340     DOCK_DEPARTING,
00341     DOCK_EJECTIRP_COMPLETED
00342 } PROFILE_STATUS, *PPROFILE_STATUS;
00343 
00344 //
00345 // Device Node States
00346 //
00347 typedef enum _PNP_DEVNODE_STATE
00348 {
00349     DeviceNodeUnspecified = 0x300,
00350     DeviceNodeUninitialized = 0x301,
00351     DeviceNodeInitialized = 0x302,
00352     DeviceNodeDriversAdded = 0x303,
00353     DeviceNodeResourcesAssigned = 0x304,
00354     DeviceNodeStartPending = 0x305,
00355     DeviceNodeStartCompletion = 0x306,
00356     DeviceNodeStartPostWork = 0x307,
00357     DeviceNodeStarted = 0x308,
00358     DeviceNodeQueryStopped = 0x309,
00359     DeviceNodeStopped = 0x30a,
00360     DeviceNodeRestartCompletion = 0x30b,
00361     DeviceNodeEnumeratePending = 0x30c,
00362     DeviceNodeEnumerateCompletion = 0x30d,
00363     DeviceNodeAwaitingQueuedDeletion = 0x30e,
00364     DeviceNodeAwaitingQueuedRemoval = 0x30f,
00365     DeviceNodeQueryRemoved = 0x310,
00366     DeviceNodeRemovePendingCloses = 0x311,
00367     DeviceNodeRemoved = 0x312,
00368     DeviceNodeDeletePendingCloses = 0x313,
00369     DeviceNodeDeleted = 0x314,
00370     MaxDeviceNodeState = 0x315,
00371 } PNP_DEVNODE_STATE;
00372 
00373 #ifdef NTOS_MODE_USER
00374 
00375 //
00376 // I/O Status Block
00377 //
00378 typedef struct _IO_STATUS_BLOCK
00379 {
00380     union
00381     {
00382         NTSTATUS Status;
00383         PVOID Pointer;
00384     };
00385     ULONG_PTR Information;
00386 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
00387 
00388 //
00389 // File Information structures for NtQueryInformationFile
00390 //
00391 typedef struct _FILE_BASIC_INFORMATION
00392 {
00393     LARGE_INTEGER CreationTime;
00394     LARGE_INTEGER LastAccessTime;
00395     LARGE_INTEGER LastWriteTime;
00396     LARGE_INTEGER ChangeTime;
00397     ULONG FileAttributes;
00398 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
00399 
00400 typedef struct _FILE_STANDARD_INFORMATION
00401 {
00402     LARGE_INTEGER AllocationSize;
00403     LARGE_INTEGER EndOfFile;
00404     ULONG NumberOfLinks;
00405     BOOLEAN DeletePending;
00406     BOOLEAN Directory;
00407 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
00408 
00409 typedef struct _FILE_STREAM_INFORMATION
00410 {
00411     ULONG NextEntryOffset;
00412     ULONG StreamNameLength;
00413     LARGE_INTEGER StreamSize;
00414     LARGE_INTEGER StreamAllocationSize;
00415     WCHAR StreamName[1];
00416 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
00417 
00418 typedef struct _FILE_NETWORK_OPEN_INFORMATION
00419 {
00420     LARGE_INTEGER CreationTime;
00421     LARGE_INTEGER LastAccessTime;
00422     LARGE_INTEGER LastWriteTime;
00423     LARGE_INTEGER ChangeTime;
00424     LARGE_INTEGER AllocationSize;
00425     LARGE_INTEGER EndOfFile;
00426     ULONG FileAttributes;
00427 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
00428 
00429 typedef struct _FILE_EA_INFORMATION
00430 {
00431     ULONG EaSize;
00432 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
00433 
00434 typedef struct _FILE_COMPRESSION_INFORMATION
00435 {
00436     LARGE_INTEGER CompressedFileSize;
00437     USHORT CompressionFormat;
00438     UCHAR CompressionUnitShift;
00439     UCHAR ChunkShift;
00440     UCHAR ClusterShift;
00441     UCHAR Reserved[3];
00442 } FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION;
00443 
00444 typedef struct _FILE_POSITION_INFORMATION
00445 {
00446   LARGE_INTEGER CurrentByteOffset;
00447 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
00448 
00449 typedef struct _FILE_DISPOSITION_INFORMATION
00450 {
00451     BOOLEAN DeleteFile;
00452 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
00453 
00454 typedef struct _FILE_FULL_EA_INFORMATION
00455 {
00456     ULONG NextEntryOffset;
00457     UCHAR Flags;
00458     UCHAR EaNameLength;
00459     USHORT EaValueLength;
00460     CHAR EaName[1];
00461 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
00462 
00463 typedef struct _FILE_QUOTA_INFORMATION
00464 {
00465     ULONG NextEntryOffset;
00466     ULONG SidLength;
00467     LARGE_INTEGER ChangeTime;
00468     LARGE_INTEGER QuotaUsed;
00469     LARGE_INTEGER QuotaThreshold;
00470     LARGE_INTEGER QuotaLimit;
00471     SID Sid;
00472 } FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
00473 
00474 typedef struct _FILE_INTERNAL_INFORMATION
00475 {
00476     LARGE_INTEGER IndexNumber;
00477 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
00478 
00479 typedef struct _FILE_RENAME_INFORMATION
00480 {
00481     BOOLEAN ReplaceIfExists;
00482     HANDLE  RootDirectory;
00483     ULONG FileNameLength;
00484     WCHAR FileName[1];
00485 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
00486 
00487 typedef struct _FILE_PIPE_INFORMATION
00488 {
00489     ULONG ReadMode;
00490     ULONG CompletionMode;
00491 } FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
00492 
00493 typedef struct _FILE_PIPE_LOCAL_INFORMATION
00494 {
00495     ULONG NamedPipeType;
00496     ULONG NamedPipeConfiguration;
00497     ULONG MaximumInstances;
00498     ULONG CurrentInstances;
00499     ULONG InboundQuota;
00500     ULONG ReadDataAvailable;
00501     ULONG OutboundQuota;
00502     ULONG WriteQuotaAvailable;
00503     ULONG NamedPipeState;
00504     ULONG NamedPipeEnd;
00505 } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
00506 
00507 typedef struct _FILE_PIPE_REMOTE_INFORMATION
00508 {
00509     LARGE_INTEGER CollectDataTime;
00510     ULONG MaximumCollectionCount;
00511 } FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION;
00512 
00513 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION
00514 {
00515     ULONG MaximumMessageSize;
00516     ULONG MailslotQuota;
00517     ULONG NextMessageSize;
00518     ULONG MessagesAvailable;
00519     LARGE_INTEGER ReadTimeout;
00520 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
00521 
00522 typedef struct _FILE_MAILSLOT_SET_INFORMATION
00523 {
00524     PLARGE_INTEGER ReadTimeout;
00525 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
00526 
00527 typedef struct _FILE_BOTH_DIR_INFORMATION
00528 {
00529     ULONG NextEntryOffset;
00530     ULONG FileIndex;
00531     LARGE_INTEGER CreationTime;
00532     LARGE_INTEGER LastAccessTime;
00533     LARGE_INTEGER LastWriteTime;
00534     LARGE_INTEGER ChangeTime;
00535     LARGE_INTEGER EndOfFile;
00536     LARGE_INTEGER AllocationSize;
00537     ULONG FileAttributes;
00538     ULONG FileNameLength;
00539     ULONG EaSize;
00540     CCHAR ShortNameLength;
00541     WCHAR ShortName[12];
00542     WCHAR FileName[1];
00543 } FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
00544 
00545 typedef struct _FILE_COMPLETION_INFORMATION
00546 {
00547     HANDLE Port;
00548     PVOID Key;
00549 } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
00550 
00551 typedef struct _FILE_LINK_INFORMATION
00552 {
00553     BOOLEAN ReplaceIfExists;
00554     HANDLE RootDirectory;
00555     ULONG FileNameLength;
00556     WCHAR FileName[1];
00557 } FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
00558 
00559 typedef struct _FILE_NAME_INFORMATION
00560 {
00561     ULONG FileNameLength;
00562     WCHAR FileName[1];
00563 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
00564 
00565 typedef struct _FILE_ALLOCATION_INFORMATION
00566 {
00567     LARGE_INTEGER AllocationSize;
00568 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
00569 
00570 typedef struct _FILE_END_OF_FILE_INFORMATION
00571 {
00572     LARGE_INTEGER EndOfFile;
00573 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
00574 
00575 typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION
00576 {
00577     LARGE_INTEGER ValidDataLength;
00578 } FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
00579 
00580 typedef struct _FILE_DIRECTORY_INFORMATION
00581 {
00582     ULONG NextEntryOffset;
00583     ULONG FileIndex;
00584     LARGE_INTEGER CreationTime;
00585     LARGE_INTEGER LastAccessTime;
00586     LARGE_INTEGER LastWriteTime;
00587     LARGE_INTEGER ChangeTime;
00588     LARGE_INTEGER EndOfFile;
00589     LARGE_INTEGER AllocationSize;
00590     ULONG FileAttributes;
00591     ULONG FileNameLength;
00592     WCHAR FileName[1];
00593 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
00594 
00595 typedef struct _FILE_IO_COMPLETION_INFORMATION
00596 {
00597     PVOID KeyContext;
00598     PVOID ApcContext;
00599     IO_STATUS_BLOCK IoStatusBlock;
00600 } FILE_IO_COMPLETION_INFORMATION, *PFILE_IO_COMPLETION_INFORMATION;
00601 
00602 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
00603 {
00604     ULONG FileAttributes;
00605     ULONG ReparseTag;
00606 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
00607 
00608 //
00609 // File System Information structures for NtQueryInformationFile
00610 //
00611 typedef struct _FILE_FS_DEVICE_INFORMATION
00612 {
00613     DEVICE_TYPE DeviceType;
00614     ULONG Characteristics;
00615 } FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
00616 
00617 typedef struct _FILE_FS_ATTRIBUTE_INFORMATION
00618 {
00619     ULONG FileSystemAttributes;
00620     ULONG MaximumComponentNameLength;
00621     ULONG FileSystemNameLength;
00622     WCHAR FileSystemName[1];
00623 } FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
00624 
00625 typedef struct _FILE_FS_SIZE_INFORMATION
00626 {
00627     LARGE_INTEGER TotalAllocationUnits;
00628     LARGE_INTEGER AvailableAllocationUnits;
00629     ULONG SectorsPerAllocationUnit;
00630     ULONG BytesPerSector;
00631 } FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
00632 
00633 typedef struct _FILE_FS_FULL_SIZE_INFORMATION
00634 {
00635     LARGE_INTEGER   TotalAllocationUnits;
00636     LARGE_INTEGER   CallerAvailableAllocationUnits;
00637     LARGE_INTEGER   ActualAvailableAllocationUnits;
00638     ULONG           SectorsPerAllocationUnit;
00639     ULONG           BytesPerSector;
00640 } FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION;
00641 
00642 typedef struct _FILE_FS_LABEL_INFORMATION
00643 {
00644     ULONG VolumeLabelLength;
00645     WCHAR VolumeLabel[1];
00646 } FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;
00647 
00648 typedef struct _FILE_FS_VOLUME_INFORMATION
00649 {
00650     LARGE_INTEGER VolumeCreationTime;
00651     ULONG VolumeSerialNumber;
00652     ULONG VolumeLabelLength;
00653     BOOLEAN SupportsObjects;
00654     WCHAR VolumeLabel[1];
00655 } FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
00656 
00657 //
00658 // Pipe Structures for IOCTL_PIPE_XXX
00659 //
00660 typedef struct _FILE_PIPE_WAIT_FOR_BUFFER
00661 {
00662     LARGE_INTEGER Timeout;
00663     ULONG NameLength;
00664     BOOLEAN TimeoutSpecified;
00665     WCHAR Name[1];
00666 } FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;
00667 
00668 typedef struct _FILE_PIPE_PEEK_BUFFER
00669 {
00670     ULONG NamedPipeState;
00671     ULONG ReadDataAvailable;
00672     ULONG NumberOfMessages;
00673     ULONG MessageLength;
00674     CHAR Data[1];
00675 } FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
00676 
00677 //
00678 // I/O Error Log Structures
00679 //
00680 typedef struct _IO_ERROR_LOG_PACKET
00681 {
00682     UCHAR MajorFunctionCode;
00683     UCHAR RetryCount;
00684     USHORT DumpDataSize;
00685     USHORT NumberOfStrings;
00686     USHORT StringOffset;
00687     USHORT EventCategory;
00688     NTSTATUS ErrorCode;
00689     ULONG UniqueErrorValue;
00690     NTSTATUS FinalStatus;
00691     ULONG SequenceNumber;
00692     ULONG IoControlCode;
00693     LARGE_INTEGER DeviceOffset;
00694     ULONG DumpData[1];
00695 }IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;
00696 
00697 typedef struct _IO_ERROR_LOG_MESSAGE
00698 {
00699     USHORT Type;
00700     USHORT Size;
00701     USHORT DriverNameLength;
00702     LARGE_INTEGER TimeStamp;
00703     ULONG DriverNameOffset;
00704     IO_ERROR_LOG_PACKET EntryData;
00705 } IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE;
00706 
00707 #endif
00708 
00709 //
00710 // I/O Completion Information structures
00711 //
00712 typedef struct _IO_COMPLETION_BASIC_INFORMATION
00713 {
00714     LONG Depth;
00715 } IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION;
00716 
00717 //
00718 // Parameters for NtCreateMailslotFile/NtCreateNamedPipeFile
00719 //
00720 typedef struct _MAILSLOT_CREATE_PARAMETERS
00721 {
00722     ULONG MailslotQuota;
00723     ULONG MaximumMessageSize;
00724     LARGE_INTEGER ReadTimeout;
00725     BOOLEAN TimeoutSpecified;
00726 } MAILSLOT_CREATE_PARAMETERS, *PMAILSLOT_CREATE_PARAMETERS;
00727 
00728 typedef struct _NAMED_PIPE_CREATE_PARAMETERS
00729 {
00730     ULONG NamedPipeType;
00731     ULONG ReadMode;
00732     ULONG CompletionMode;
00733     ULONG MaximumInstances;
00734     ULONG InboundQuota;
00735     ULONG OutboundQuota;
00736     LARGE_INTEGER DefaultTimeout;
00737     BOOLEAN TimeoutSpecified;
00738 } NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS;
00739 
00740 #ifndef NTOS_MODE_USER
00741 
00742 //
00743 // I/O Timer Object
00744 //
00745 typedef struct _IO_TIMER
00746 {
00747     USHORT Type;
00748     USHORT TimerEnabled;
00749     LIST_ENTRY IoTimerList;
00750     PIO_TIMER_ROUTINE TimerRoutine;
00751     PVOID Context;
00752     PDEVICE_OBJECT DeviceObject;
00753 } IO_TIMER;
00754 
00755 //
00756 // Driver Extension
00757 //
00758 typedef struct _IO_CLIENT_EXTENSION
00759 {
00760     struct _IO_CLIENT_EXTENSION *NextExtension;
00761     PVOID ClientIdentificationAddress;
00762 } IO_CLIENT_EXTENSION, *PIO_CLIENT_EXTENSION;
00763 
00764 //
00765 // Device Node
00766 //
00767 typedef struct _DEVICE_NODE
00768 {
00769     struct _DEVICE_NODE *Sibling;
00770     struct _DEVICE_NODE *Child;
00771     struct _DEVICE_NODE *Parent;
00772     struct _DEVICE_NODE *LastChild;
00773     ULONG Level;
00774     struct _PO_DEVICE_NOTIFY *Notify;
00775     PO_IRP_MANAGER PoIrpManager;
00776     PNP_DEVNODE_STATE State;
00777     PNP_DEVNODE_STATE PreviousState;
00778     PNP_DEVNODE_STATE StateHistory[20];
00779     ULONG StateHistoryEntry;
00780     NTSTATUS CompletionStatus;
00781     PIRP PendingIrp;
00782     ULONG Flags;
00783     ULONG UserFlags;
00784     ULONG Problem;
00785     PDEVICE_OBJECT PhysicalDeviceObject;
00786     PCM_RESOURCE_LIST ResourceList;
00787     PCM_RESOURCE_LIST ResourceListTranslated;
00788     UNICODE_STRING InstancePath;
00789     UNICODE_STRING ServiceName;
00790     PDEVICE_OBJECT DuplicatePDO;
00791     PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements;
00792     INTERFACE_TYPE InterfaceType;
00793     ULONG BusNumber;
00794     INTERFACE_TYPE ChildInterfaceType;
00795     ULONG ChildBusNumber;
00796     USHORT ChildBusTypeIndex;
00797     UCHAR RemovalPolicy;
00798     UCHAR HardwareRemovalPolicy;
00799     LIST_ENTRY TargetDeviceNotify;
00800     LIST_ENTRY DeviceArbiterList;
00801     LIST_ENTRY DeviceTranslatorList;
00802     USHORT NoTranslatorMask;
00803     USHORT QueryTranslatorMask;
00804     USHORT NoArbiterMask;
00805     USHORT QueryArbiterMask;
00806     union
00807     {
00808         struct _DEVICE_NODE *LegacyDeviceNode;
00809         PDEVICE_RELATIONS PendingDeviceRelations;
00810     } OverUsed1;
00811     union
00812     {
00813         struct _DEVICE_NODE *NextResourceDeviceNode;
00814     } OverUsed2;
00815     PCM_RESOURCE_LIST BootResources;
00816 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
00817     PCM_RESOURCE_LIST BootResourcesTranslated;
00818 #endif
00819     ULONG CapabilityFlags;
00820     struct
00821     {
00822         PROFILE_STATUS DockStatus;
00823         LIST_ENTRY ListEntry;
00824         WCHAR *SerialNumber;
00825     } DockInfo;
00826     ULONG DisableableDepends;
00827     LIST_ENTRY PendedSetInterfaceState;
00828     LIST_ENTRY LegacyBusListEntry;
00829     ULONG DriverUnloadRetryCount;
00830     struct _DEVICE_NODE *PreviousParent;
00831     ULONG DeletedChidren;
00832 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
00833     ULONG NumaNodeIndex;
00834 #endif
00835 } DEVICE_NODE, *PDEVICE_NODE;
00836 
00837 //
00838 // Resource Aribtrer Entry
00839 //
00840 typedef struct _PI_RESOURCE_ARBITER_ENTRY
00841 {
00842     LIST_ENTRY DeviceArbiterList;
00843     UCHAR ResourceType;
00844     PARBITER_INTERFACE ArbiterInterface;
00845     ULONG Level;
00846     LIST_ENTRY ResourceList;
00847     LIST_ENTRY BestResourceList;
00848     LIST_ENTRY BestConfig;
00849     LIST_ENTRY ActiveArbiterList;
00850     UCHAR State;
00851     UCHAR ResourcesChanged;
00852 } PI_RESOURCE_ARBITER_ENTRY, *PPI_RESOURCE_ARBITER_ENTRY;
00853 
00854 //
00855 // Extended Device Object Extension Structure
00856 //
00857 typedef struct _EXTENDED_DEVOBJ_EXTENSION
00858 {
00859     CSHORT Type;
00860     USHORT Size;
00861     PDEVICE_OBJECT DeviceObject;
00862     ULONG PowerFlags;
00863     struct _DEVICE_OBJECT_POWER_EXTENSION *Dope;
00864     ULONG ExtensionFlags;
00865     struct _DEVICE_NODE *DeviceNode;
00866     PDEVICE_OBJECT AttachedTo;
00867     LONG StartIoCount;
00868     LONG StartIoKey;
00869     ULONG StartIoFlags;
00870     struct _VPB *Vpb;
00871 } EXTENDED_DEVOBJ_EXTENSION, *PEXTENDED_DEVOBJ_EXTENSION;
00872 
00873 //
00874 // Extended Driver Object Extension Structure
00875 //
00876 typedef struct _EXTENDED_DRIVER_EXTENSION
00877 {
00878     struct _DRIVER_OBJECT *DriverObject;
00879     PDRIVER_ADD_DEVICE AddDevice;
00880     ULONG Count;
00881     UNICODE_STRING ServiceKeyName;
00882     PIO_CLIENT_EXTENSION ClientDriverExtension;
00883     PFS_FILTER_CALLBACKS FsFilterCallbacks;
00884 } EXTENDED_DRIVER_EXTENSION, *PEXTENDED_DRIVER_EXTENSION;
00885 
00886 //
00887 // Extended I/O Stack Location Structure
00888 //
00889 #if !defined(_ALPHA_)
00890 #include <pshpack4.h>
00891 #endif
00892 typedef struct _EXTENDED_IO_STACK_LOCATION
00893 {
00894     UCHAR MajorFunction;
00895     UCHAR MinorFunction;
00896     UCHAR Flags;
00897     UCHAR Control;
00898     union
00899     {
00900         struct
00901         {
00902             PIO_SECURITY_CONTEXT SecurityContext;
00903             ULONG Options;
00904             USHORT FileAttributes;
00905             USHORT ShareAccess;
00906             ULONG EaLength;
00907         } Create;
00908         struct
00909         {
00910             PIO_SECURITY_CONTEXT SecurityContext;
00911             ULONG Options;
00912             USHORT Reserved;
00913             USHORT ShareAccess;
00914             struct _NAMED_PIPE_CREATE_PARAMETERS *Parameters;
00915         } CreatePipe;
00916         struct
00917         {
00918             PIO_SECURITY_CONTEXT SecurityContext;
00919             ULONG Options;
00920             USHORT Reserved;
00921             USHORT ShareAccess;
00922             struct _MAILSLOT_CREATE_PARAMETERS *Parameters;
00923         } CreateMailslot;
00924         struct
00925         {
00926             ULONG Length;
00927             ULONG Key;
00928             LARGE_INTEGER ByteOffset;
00929         } Read;
00930         struct
00931         {
00932             ULONG Length;
00933             ULONG Key;
00934             LARGE_INTEGER ByteOffset;
00935         } Write;
00936         struct
00937         {
00938             ULONG Length;
00939             PUNICODE_STRING FileName;
00940             FILE_INFORMATION_CLASS FileInformationClass;
00941             ULONG FileIndex;
00942         } QueryDirectory;
00943         struct
00944         {
00945             ULONG Length;
00946             ULONG CompletionFilter;
00947         } NotifyDirectory;
00948         struct
00949         {
00950             ULONG Length;
00951             FILE_INFORMATION_CLASS FileInformationClass;
00952         } QueryFile;
00953         struct
00954         {
00955             ULONG Length;
00956             FILE_INFORMATION_CLASS FileInformationClass;
00957             PFILE_OBJECT  FileObject;
00958             union
00959             {
00960                 struct
00961                 {
00962                     BOOLEAN ReplaceIfExists;
00963                     BOOLEAN AdvanceOnly;
00964                 };
00965                 ULONG ClusterCount;
00966                 HANDLE DeleteHandle;
00967             };
00968         } SetFile;
00969         struct
00970         {
00971             ULONG Length;
00972             PVOID EaList;
00973             ULONG EaListLength;
00974             ULONG EaIndex;
00975         } QueryEa;
00976         struct
00977         {
00978             ULONG Length;
00979         } SetEa;
00980         struct
00981         {
00982             ULONG Length;
00983             FS_INFORMATION_CLASS FsInformationClass;
00984         } QueryVolume;
00985         struct
00986         {
00987             ULONG Length;
00988             FS_INFORMATION_CLASS FsInformationClass;
00989         } SetVolume;
00990         struct
00991         {
00992             ULONG OutputBufferLength;
00993             ULONG InputBufferLength;
00994             ULONG FsControlCode;
00995             PVOID Type3InputBuffer;
00996         } FileSystemControl;
00997         struct
00998         {
00999             PLARGE_INTEGER Length;
01000             ULONG Key;
01001             LARGE_INTEGER ByteOffset;
01002         } LockControl;
01003         struct
01004         {
01005             ULONG OutputBufferLength;
01006             ULONG InputBufferLength;
01007             ULONG IoControlCode;
01008             PVOID Type3InputBuffer;
01009         } DeviceIoControl;
01010         struct
01011         {
01012             SECURITY_INFORMATION SecurityInformation;
01013             ULONG POINTER_ALIGNMENT Length;
01014         } QuerySecurity;
01015         struct
01016         {
01017             SECURITY_INFORMATION SecurityInformation;
01018             PSECURITY_DESCRIPTOR SecurityDescriptor;
01019         } SetSecurity;
01020         struct
01021         {
01022             PVPB Vpb;
01023             PDEVICE_OBJECT DeviceObject;
01024         } MountVolume;
01025         struct
01026         {
01027             PVPB Vpb;
01028             PDEVICE_OBJECT DeviceObject;
01029         } VerifyVolume;
01030         struct
01031         {
01032             struct _SCSI_REQUEST_BLOCK *Srb;
01033         } Scsi;
01034         struct
01035         {
01036             ULONG Length;
01037             PSID StartSid;
01038             struct _FILE_GET_QUOTA_INFORMATION *SidList;
01039             ULONG SidListLength;
01040         } QueryQuota;
01041         struct
01042         {
01043             ULONG Length;
01044         } SetQuota;
01045         struct
01046         {
01047             DEVICE_RELATION_TYPE Type;
01048         } QueryDeviceRelations;
01049         struct
01050         {
01051             CONST GUID *InterfaceType;
01052             USHORT Size;
01053             USHORT Version;
01054             PINTERFACE Interface;
01055             PVOID InterfaceSpecificData;
01056         } QueryInterface;
01057         struct
01058         {
01059             PDEVICE_CAPABILITIES Capabilities;
01060         } DeviceCapabilities;
01061         struct
01062         {
01063             PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList;
01064         } FilterResourceRequirements;
01065         struct
01066         {
01067             ULONG WhichSpace;
01068             PVOID Buffer;
01069             ULONG Offset;
01070             ULONG Length;
01071         } ReadWriteConfig;
01072         struct
01073         {
01074             BOOLEAN Lock;
01075         } SetLock;
01076         struct
01077         {
01078             BUS_QUERY_ID_TYPE IdType;
01079         } QueryId;
01080         struct
01081         {
01082             DEVICE_TEXT_TYPE DeviceTextType;
01083             LCID LocaleId;
01084         } QueryDeviceText;
01085         struct
01086         {
01087             BOOLEAN InPath;
01088             BOOLEAN Reserved[3];
01089             DEVICE_USAGE_NOTIFICATION_TYPE Type;
01090         } UsageNotification;
01091         struct
01092         {
01093             SYSTEM_POWER_STATE  PowerState;
01094         } WaitWake;
01095         struct
01096         {
01097             PPOWER_SEQUENCE  PowerSequence;
01098         } PowerSequence;
01099         struct
01100         {
01101             ULONG SystemContext;
01102             POWER_STATE_TYPE Type;
01103             POWER_STATE State;
01104             POWER_ACTION ShutdownType;
01105         } Power;
01106         struct
01107         {
01108             PCM_RESOURCE_LIST AllocatedResources;
01109             PCM_RESOURCE_LIST AllocatedResourcesTranslated;
01110         } StartDevice;
01111         struct
01112         {
01113             ULONG_PTR ProviderId;
01114             PVOID DataPath;
01115             ULONG BufferSize;
01116             PVOID Buffer;
01117         } WMI;
01118         struct
01119         {
01120             PVOID Argument1;
01121             PVOID Argument2;
01122             PVOID Argument3;
01123             PVOID Argument4;
01124         } Others;
01125     } Parameters;
01126     PDEVICE_OBJECT DeviceObject;
01127     PFILE_OBJECT FileObject;
01128     PIO_COMPLETION_ROUTINE CompletionRoutine;
01129     PVOID Context;
01130 } EXTENDED_IO_STACK_LOCATION, *PEXTENDED_IO_STACK_LOCATION;
01131 #if !defined(_ALPHA_)
01132 #include <poppack.h>
01133 #endif
01134 #endif
01135 
01136 //
01137 // Firmware Boot File Path
01138 //
01139 typedef struct _FILE_PATH
01140 {
01141     ULONG Version;
01142     ULONG Length;
01143     ULONG Type;
01144     CHAR FilePath[1];
01145 } FILE_PATH, *PFILE_PATH;
01146 
01147 //
01148 // Firmware Boot Options
01149 //
01150 typedef struct _BOOT_OPTIONS
01151 {
01152     ULONG Version;
01153     ULONG Length;
01154     ULONG Timeout;
01155     ULONG CurrentBootEntryId;
01156     ULONG NextBootEntryId;
01157     WCHAR HeadlessRedirection[1];
01158 } BOOT_OPTIONS, *PBOOT_OPTIONS;
01159 
01160 //
01161 // Firmware Boot Entry
01162 //
01163 typedef struct _BOOT_ENTRY
01164 {
01165     ULONG Version;
01166     ULONG Length;
01167     ULONG Id;
01168     ULONG Attributes;
01169     ULONG FriendlyNameOffset;
01170     ULONG BootFilePathOffset;
01171     ULONG OsOptionsLength;
01172     CHAR OsOptions[1];
01173 } BOOT_ENTRY, *PBOOT_ENTRY;
01174 
01175 //
01176 // Firmware Driver Entry
01177 //
01178 typedef struct _EFI_DRIVER_ENTRY
01179 {
01180     ULONG Version;
01181     ULONG Length;
01182     ULONG Id;
01183     ULONG Attributes;
01184     ULONG FriendlyNameOffset;
01185     ULONG DriverFilePathOffset;
01186 } EFI_DRIVER_ENTRY, *PEFI_DRIVER_ENTRY;
01187 
01188 #ifdef NTOS_MODE_USER
01189 
01190 //
01191 // APC Callback for NtCreateFile
01192 //
01193 typedef VOID
01194 (NTAPI *PIO_APC_ROUTINE)(
01195     IN PVOID ApcContext,
01196     IN PIO_STATUS_BLOCK IoStatusBlock,
01197     IN ULONG Reserved);
01198 
01199 //
01200 // Mailslot IOCTL Codes
01201 //
01202 #define FSCTL_MAILSLOT_PEEK             \
01203     CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
01204 
01205 //
01206 // Pipe IOCTL Codes
01207 //
01208 #define FSCTL_PIPE_ASSIGN_EVENT         \
01209     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
01210 #define FSCTL_PIPE_DISCONNECT           \
01211     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
01212 #define FSCTL_PIPE_LISTEN               \
01213     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
01214 #define FSCTL_PIPE_PEEK                 \
01215     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
01216 #define FSCTL_PIPE_QUERY_EVENT          \
01217     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
01218 #define FSCTL_PIPE_TRANSCEIVE           \
01219     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER,  FILE_READ_DATA | FILE_WRITE_DATA)
01220 #define FSCTL_PIPE_WAIT                 \
01221     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
01222 #define FSCTL_PIPE_IMPERSONATE          \
01223     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
01224 #define FSCTL_PIPE_SET_CLIENT_PROCESS   \
01225     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
01226 #define FSCTL_PIPE_QUERY_CLIENT_PROCESS \
01227     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
01228 #define FSCTL_PIPE_INTERNAL_READ        \
01229     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
01230 #define FSCTL_PIPE_INTERNAL_WRITE       \
01231     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
01232 #define FSCTL_PIPE_INTERNAL_TRANSCEIVE  \
01233     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
01234 #define FSCTL_PIPE_INTERNAL_READ_OVFLOW \
01235     CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
01236 
01237 //
01238 // Tape IOCTL Codes
01239 //
01240 #define IOCTL_TAPE_ERASE                \
01241     CTL_CODE(FILE_DEVICE_TAPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
01242 #define IOCTL_TAPE_PREPARE              \
01243     CTL_CODE(FILE_DEVICE_TAPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS)
01244 #define IOCTL_TAPE_WRITE_MARKS          \
01245     CTL_CODE(FILE_DEVICE_TAPE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
01246 #define IOCTL_TAPE_GET_POSITION         \
01247     CTL_CODE(FILE_DEVICE_TAPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS)
01248 #define IOCTL_TAPE_SET_POSITION         \
01249     CTL_CODE(FILE_DEVICE_TAPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS)
01250 #define IOCTL_TAPE_GET_DRIVE_PARAMS     \
01251     CTL_CODE(FILE_DEVICE_TAPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS)
01252 #define IOCTL_TAPE_SET_DRIVE_PARAMS     \
01253     CTL_CODE(FILE_DEVICE_TAPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
01254 #define IOCTL_TAPE_GET_MEDIA_PARAMS     \
01255     CTL_CODE(FILE_DEVICE_TAPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS)
01256 #define IOCTL_TAPE_SET_MEDIA_PARAMS     \
01257     CTL_CODE(FILE_DEVICE_TAPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
01258 #define IOCTL_TAPE_GET_STATUS           \
01259     CTL_CODE(FILE_DEVICE_TAPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS)
01260 #define IOCTL_TAPE_CREATE_PARTITION     \
01261     CTL_CODE(FILE_DEVICE_TAPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
01262 
01263 #endif // NTOS_MODE_USER
01264 
01265 #endif

Generated on Sat May 26 2012 04:29:32 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.