Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygeniotypes.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
1.7.6.1
|