2 * PROJECT: ReactOS Native Headers
3 * FILE: include/ndk/iotypes.h
4 * PURPOSE: Definitions for exported I/O Manager Types not defined in DDK/IFS
5 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
13 /* DEPENDENCIES **************************************************************/
15 /* EXPORTED DATA *************************************************************/
16 #ifndef NTOS_MODE_USER
17 extern POBJECT_TYPE NTSYSAPI IoAdapterObjectType
;
18 extern POBJECT_TYPE NTSYSAPI IoDeviceHandlerObjectType
;
19 extern POBJECT_TYPE NTSYSAPI IoDeviceObjectType
;
20 extern POBJECT_TYPE NTSYSAPI IoDriverObjectType
;
23 /* CONSTANTS *****************************************************************/
26 /* Object Access Rights */
27 #define SYMBOLIC_LINK_QUERY 0x0001
28 #define SYMBOLIC_LINK_ALL_ACCESS STANDARD_RIGHTS_REQUIRED | 0x0001
31 /* File Result Flags */
32 #define FILE_SUPERSEDED 0x00000000
33 #define FILE_OPENED 0x00000001
34 #define FILE_CREATED 0x00000002
35 #define FILE_OVERWRITTEN 0x00000003
36 #define FILE_EXISTS 0x00000004
37 #define FILE_DOES_NOT_EXIST 0x00000005
40 #define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
41 #define FILE_PIPE_MESSAGE_MODE 0x00000001
42 #define FILE_PIPE_QUEUE_OPERATION 0x00000000
43 #define FILE_PIPE_COMPLETE_OPERATION 0x00000001
44 #define FILE_PIPE_INBOUND 0x00000000
45 #define FILE_PIPE_OUTBOUND 0x00000001
46 #define FILE_PIPE_FULL_DUPLEX 0x00000002
47 #define FILE_PIPE_CLIENT_END 0x00000000
48 #define FILE_PIPE_SERVER_END 0x00000001
51 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
52 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
55 #define FILE_SUPERSEDE 0x00000000
56 #define FILE_OPEN 0x00000001
57 #define FILE_CREATE 0x00000002
58 #define FILE_OPEN_IF 0x00000003
59 #define FILE_OVERWRITE 0x00000004
60 #define FILE_OVERWRITE_IF 0x00000005
61 #define FILE_MAXIMUM_DISPOSITION 0x00000005
64 #define FILE_DIRECTORY_FILE 0x00000001
65 #define FILE_WRITE_THROUGH 0x00000002
66 #define FILE_SEQUENTIAL_ONLY 0x00000004
67 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
68 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
69 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
70 #define FILE_NON_DIRECTORY_FILE 0x00000040
71 #define FILE_CREATE_TREE_CONNECTION 0x00000080
72 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
73 #define FILE_NO_EA_KNOWLEDGE 0x00000200
74 #define FILE_OPEN_FOR_RECOVERY 0x00000400
75 #define FILE_RANDOM_ACCESS 0x00000800
76 #define FILE_DELETE_ON_CLOSE 0x00001000
77 #define FILE_OPEN_BY_FILE_ID 0x00002000
78 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
79 #define FILE_NO_COMPRESSION 0x00008000
80 #define FILE_RESERVE_OPFILTER 0x00100000
81 #define FILE_OPEN_REPARSE_POINT 0x00200000
82 #define FILE_OPEN_NO_RECALL 0x00400000
83 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
85 /* Device Charactertics */
86 #define FILE_REMOVABLE_MEDIA 0x00000001
87 #define FILE_REMOTE_DEVICE 0x00000010
89 /* Device Object Extension Flags */
90 #define DOE_UNLOAD_PENDING 0x1
91 #define DOE_DELETE_PENDING 0x2
92 #define DOE_REMOVE_PENDING 0x4
93 #define DOE_REMOVE_PROCESSED 0x8
94 #define DOE_START_PENDING 0x10
96 /* Device Node Flags */
97 #define DNF_PROCESSED 0x00000001
98 #define DNF_STARTED 0x00000002
99 #define DNF_START_FAILED 0x00000004
100 #define DNF_ENUMERATED 0x00000008
101 #define DNF_DELETED 0x00000010
102 #define DNF_MADEUP 0x00000020
103 #define DNF_START_REQUEST_PENDING 0x00000040
104 #define DNF_NO_RESOURCE_REQUIRED 0x00000080
105 #define DNF_INSUFFICIENT_RESOURCES 0x00000100
106 #define DNF_RESOURCE_ASSIGNED 0x00000200
107 #define DNF_RESOURCE_REPORTED 0x00000400
108 #define DNF_HAL_NODE 0x00000800 // ???
109 #define DNF_ADDED 0x00001000
110 #define DNF_ADD_FAILED 0x00002000
111 #define DNF_LEGACY_DRIVER 0x00004000
112 #define DNF_STOPPED 0x00008000
113 #define DNF_WILL_BE_REMOVED 0x00010000
114 #define DNF_NEED_TO_ENUM 0x00020000
115 #define DNF_NOT_CONFIGURED 0x00040000
116 #define DNF_REINSTALL 0x00080000
117 #define DNF_RESOURCE_REQUIREMENTS_NEED_FILTERED 0x00100000 // ???
118 #define DNF_DISABLED 0x00200000
119 #define DNF_RESTART_OK 0x00400000
120 #define DNF_NEED_RESTART 0x00800000
121 #define DNF_VISITED 0x01000000
122 #define DNF_ASSIGNING_RESOURCES 0x02000000
123 #define DNF_BEEING_ENUMERATED 0x04000000
124 #define DNF_NEED_ENUMERATION_ONLY 0x08000000
125 #define DNF_LOCKED 0x10000000
126 #define DNF_HAS_BOOT_CONFIG 0x20000000
127 #define DNF_BOOT_CONFIG_RESERVED 0x40000000
128 #define DNF_HAS_PROBLEM 0x80000000 // ???
129 /* For UserFlags field */
130 #define DNUF_DONT_SHOW_IN_UI 0x0002
131 #define DNUF_NOT_DISABLEABLE 0x0008
133 /* ENUMERATIONS **************************************************************/
135 #ifdef NTOS_MODE_USER
136 typedef enum _INTERFACE_TYPE
138 InterfaceTypeUndefined
= -1,
156 }INTERFACE_TYPE
, *PINTERFACE_TYPE
;
158 typedef enum _FILE_INFORMATION_CLASS
160 FileDirectoryInformation
= 1,
161 FileFullDirectoryInformation
,
162 FileBothDirectoryInformation
,
163 FileBasicInformation
,
164 FileStandardInformation
,
165 FileInternalInformation
,
167 FileAccessInformation
,
169 FileRenameInformation
,
171 FileNamesInformation
,
172 FileDispositionInformation
,
173 FilePositionInformation
,
174 FileFullEaInformation
,
176 FileAlignmentInformation
,
178 FileAllocationInformation
,
179 FileEndOfFileInformation
,
180 FileAlternateNameInformation
,
181 FileStreamInformation
,
183 FilePipeLocalInformation
,
184 FilePipeRemoteInformation
,
185 FileMailslotQueryInformation
,
186 FileMailslotSetInformation
,
187 FileCompressionInformation
,
188 FileObjectIdInformation
,
189 FileCompletionInformation
,
190 FileMoveClusterInformation
,
191 FileQuotaInformation
,
192 FileReparsePointInformation
,
193 FileNetworkOpenInformation
,
194 FileAttributeTagInformation
,
195 FileTrackingInformation
,
196 FileIdBothDirectoryInformation
,
197 FileIdFullDirectoryInformation
,
198 FileValidDataLengthInformation
,
199 FileShortNameInformation
,
200 FileMaximumInformation
201 } FILE_INFORMATION_CLASS
, *PFILE_INFORMATION_CLASS
;
203 typedef enum _FSINFOCLASS
205 FileFsVolumeInformation
= 1,
206 FileFsLabelInformation
,
207 FileFsSizeInformation
,
208 FileFsDeviceInformation
,
209 FileFsAttributeInformation
,
210 FileFsControlInformation
,
211 FileFsFullSizeInformation
,
212 FileFsObjectIdInformation
,
213 FileFsDriverPathInformation
,
214 FileFsMaximumInformation
215 } FS_INFORMATION_CLASS
, *PFS_INFORMATION_CLASS
;
218 typedef enum _PNP_DEVNODE_STATE
220 DeviceNodeUnspecified
= 0x300,
221 DeviceNodeUninitialized
= 0x301,
222 DeviceNodeInitialized
= 0x302,
223 DeviceNodeDriversAdded
= 0x303,
224 DeviceNodeResourcesAssigned
= 0x304,
225 DeviceNodeStartPending
= 0x305,
226 DeviceNodeStartCompletion
= 0x306,
227 DeviceNodeStartPostWork
= 0x307,
228 DeviceNodeStarted
= 0x308,
229 DeviceNodeQueryStopped
= 0x309,
230 DeviceNodeStopped
= 0x30a,
231 DeviceNodeRestartCompletion
= 0x30b,
232 DeviceNodeEnumeratePending
= 0x30c,
233 DeviceNodeEnumerateCompletion
= 0x30d,
234 DeviceNodeAwaitingQueuedDeletion
= 0x30e,
235 DeviceNodeAwaitingQueuedRemoval
= 0x30f,
236 DeviceNodeQueryRemoved
= 0x310,
237 DeviceNodeRemovePendingCloses
= 0x311,
238 DeviceNodeRemoved
= 0x312,
239 DeviceNodeDeletePendingCloses
= 0x313,
240 DeviceNodeDeleted
= 0x314,
241 MaxDeviceNodeState
= 0x315,
244 /* TYPES *********************************************************************/
246 #ifdef NTOS_MODE_USER
247 typedef struct _FILE_BASIC_INFORMATION
249 LARGE_INTEGER CreationTime
;
250 LARGE_INTEGER LastAccessTime
;
251 LARGE_INTEGER LastWriteTime
;
252 LARGE_INTEGER ChangeTime
;
253 ULONG FileAttributes
;
254 } FILE_BASIC_INFORMATION
, *PFILE_BASIC_INFORMATION
;
256 typedef struct _FILE_STANDARD_INFORMATION
258 LARGE_INTEGER AllocationSize
;
259 LARGE_INTEGER EndOfFile
;
261 BOOLEAN DeletePending
;
263 } FILE_STANDARD_INFORMATION
, *PFILE_STANDARD_INFORMATION
;
265 typedef struct _FILE_NETWORK_OPEN_INFORMATION
267 LARGE_INTEGER CreationTime
;
268 LARGE_INTEGER LastAccessTime
;
269 LARGE_INTEGER LastWriteTime
;
270 LARGE_INTEGER ChangeTime
;
271 LARGE_INTEGER AllocationSize
;
272 LARGE_INTEGER EndOfFile
;
273 ULONG FileAttributes
;
274 } FILE_NETWORK_OPEN_INFORMATION
, *PFILE_NETWORK_OPEN_INFORMATION
;
276 typedef struct _FILE_EA_INFORMATION
279 } FILE_EA_INFORMATION
, *PFILE_EA_INFORMATION
;
281 typedef struct _FILE_COMPRESSION_INFORMATION
283 LARGE_INTEGER CompressedFileSize
;
284 USHORT CompressionFormat
;
285 UCHAR CompressionUnitShift
;
289 } FILE_COMPRESSION_INFORMATION
, *PFILE_COMPRESSION_INFORMATION
;
291 typedef struct _FILE_POSITION_INFORMATION
293 LARGE_INTEGER CurrentByteOffset
;
294 } FILE_POSITION_INFORMATION
, *PFILE_POSITION_INFORMATION
;
296 typedef struct _FILE_DISPOSITION_INFORMATION
299 } FILE_DISPOSITION_INFORMATION
, *PFILE_DISPOSITION_INFORMATION
;
301 typedef struct _FILE_FULL_EA_INFORMATION
303 ULONG NextEntryOffset
;
306 USHORT EaValueLength
;
308 } FILE_FULL_EA_INFORMATION
, *PFILE_FULL_EA_INFORMATION
;
310 typedef struct _FILE_QUOTA_INFORMATION
312 ULONG NextEntryOffset
;
314 LARGE_INTEGER ChangeTime
;
315 LARGE_INTEGER QuotaUsed
;
316 LARGE_INTEGER QuotaThreshold
;
317 LARGE_INTEGER QuotaLimit
;
319 } FILE_QUOTA_INFORMATION
, *PFILE_QUOTA_INFORMATION
;
321 typedef struct _FILE_INTERNAL_INFORMATION
323 LARGE_INTEGER IndexNumber
;
324 } FILE_INTERNAL_INFORMATION
, *PFILE_INTERNAL_INFORMATION
;
326 typedef struct _FILE_RENAME_INFORMATION
328 BOOLEAN ReplaceIfExists
;
329 HANDLE RootDirectory
;
330 ULONG FileNameLength
;
332 } FILE_RENAME_INFORMATION
, *PFILE_RENAME_INFORMATION
;
334 typedef struct _FILE_PIPE_INFORMATION
337 ULONG CompletionMode
;
338 } FILE_PIPE_INFORMATION
, *PFILE_PIPE_INFORMATION
;
340 typedef struct _FILE_PIPE_LOCAL_INFORMATION
343 ULONG NamedPipeConfiguration
;
344 ULONG MaximumInstances
;
345 ULONG CurrentInstances
;
347 ULONG ReadDataAvailable
;
349 ULONG WriteQuotaAvailable
;
350 ULONG NamedPipeState
;
352 } FILE_PIPE_LOCAL_INFORMATION
, *PFILE_PIPE_LOCAL_INFORMATION
;
354 typedef struct _FILE_PIPE_REMOTE_INFORMATION
356 LARGE_INTEGER CollectDataTime
;
357 ULONG MaximumCollectionCount
;
358 } FILE_PIPE_REMOTE_INFORMATION
, *PFILE_PIPE_REMOTE_INFORMATION
;
360 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION
362 ULONG MaximumMessageSize
;
364 ULONG NextMessageSize
;
365 ULONG MessagesAvailable
;
366 LARGE_INTEGER ReadTimeout
;
367 } FILE_MAILSLOT_QUERY_INFORMATION
, *PFILE_MAILSLOT_QUERY_INFORMATION
;
369 typedef struct _FILE_MAILSLOT_SET_INFORMATION
371 PLARGE_INTEGER ReadTimeout
;
372 } FILE_MAILSLOT_SET_INFORMATION
, *PFILE_MAILSLOT_SET_INFORMATION
;
374 typedef struct _FILE_BOTH_DIR_INFORMATION
376 ULONG NextEntryOffset
;
378 LARGE_INTEGER CreationTime
;
379 LARGE_INTEGER LastAccessTime
;
380 LARGE_INTEGER LastWriteTime
;
381 LARGE_INTEGER ChangeTime
;
382 LARGE_INTEGER EndOfFile
;
383 LARGE_INTEGER AllocationSize
;
384 ULONG FileAttributes
;
385 ULONG FileNameLength
;
387 CCHAR ShortNameLength
;
390 } FILE_BOTH_DIR_INFORMATION
, *PFILE_BOTH_DIR_INFORMATION
;
392 typedef struct _FILE_COMPLETION_INFORMATION
396 } FILE_COMPLETION_INFORMATION
, *PFILE_COMPLETION_INFORMATION
;
398 typedef struct _FILE_LINK_INFORMATION
400 BOOLEAN ReplaceIfExists
;
401 HANDLE RootDirectory
;
402 ULONG FileNameLength
;
404 } FILE_LINK_INFORMATION
, *PFILE_LINK_INFORMATION
;
406 typedef struct _FILE_NAME_INFORMATION
408 ULONG FileNameLength
;
410 } FILE_NAME_INFORMATION
, *PFILE_NAME_INFORMATION
;
412 typedef struct _FILE_ALLOCATION_INFORMATION
414 LARGE_INTEGER AllocationSize
;
415 } FILE_ALLOCATION_INFORMATION
, *PFILE_ALLOCATION_INFORMATION
;
417 typedef struct _FILE_END_OF_FILE_INFORMATION
419 LARGE_INTEGER EndOfFile
;
420 } FILE_END_OF_FILE_INFORMATION
, *PFILE_END_OF_FILE_INFORMATION
;
422 typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION
424 LARGE_INTEGER ValidDataLength
;
425 } FILE_VALID_DATA_LENGTH_INFORMATION
, *PFILE_VALID_DATA_LENGTH_INFORMATION
;
427 typedef struct _FILE_FS_DEVICE_INFORMATION
429 DEVICE_TYPE DeviceType
;
430 ULONG Characteristics
;
431 } FILE_FS_DEVICE_INFORMATION
, *PFILE_FS_DEVICE_INFORMATION
;
433 typedef struct _FILE_FS_ATTRIBUTE_INFORMATION
435 ULONG FileSystemAttributes
;
436 ULONG MaximumComponentNameLength
;
437 ULONG FileSystemNameLength
;
438 WCHAR FileSystemName
[1];
439 } FILE_FS_ATTRIBUTE_INFORMATION
, *PFILE_FS_ATTRIBUTE_INFORMATION
;
441 typedef struct _FILE_FS_SIZE_INFORMATION
443 LARGE_INTEGER TotalAllocationUnits
;
444 LARGE_INTEGER AvailableAllocationUnits
;
445 ULONG SectorsPerAllocationUnit
;
446 ULONG BytesPerSector
;
447 } FILE_FS_SIZE_INFORMATION
, *PFILE_FS_SIZE_INFORMATION
;
449 typedef struct _FILE_FS_LABEL_INFORMATION
451 ULONG VolumeLabelLength
;
452 WCHAR VolumeLabel
[1];
453 } FILE_FS_LABEL_INFORMATION
, *PFILE_FS_LABEL_INFORMATION
;
455 typedef struct _FILE_FS_VOLUME_INFORMATION
457 LARGE_INTEGER VolumeCreationTime
;
458 ULONG VolumeSerialNumber
;
459 ULONG VolumeLabelLength
;
460 BOOLEAN SupportsObjects
;
461 WCHAR VolumeLabel
[1];
462 } FILE_FS_VOLUME_INFORMATION
, *PFILE_FS_VOLUME_INFORMATION
;
464 typedef struct _FILE_PIPE_WAIT_FOR_BUFFER
466 LARGE_INTEGER Timeout
;
468 BOOLEAN TimeoutSpecified
;
470 } FILE_PIPE_WAIT_FOR_BUFFER
, *PFILE_PIPE_WAIT_FOR_BUFFER
;
472 typedef struct _FILE_PIPE_PEEK_BUFFER
474 ULONG NamedPipeState
;
475 ULONG ReadDataAvailable
;
476 ULONG NumberOfMessages
;
479 } FILE_PIPE_PEEK_BUFFER
, *PFILE_PIPE_PEEK_BUFFER
;
481 typedef struct _IO_STATUS_BLOCK
488 ULONG_PTR Information
;
489 } IO_STATUS_BLOCK
, *PIO_STATUS_BLOCK
;
491 typedef struct _IO_ERROR_LOG_PACKET
493 UCHAR MajorFunctionCode
;
496 USHORT NumberOfStrings
;
498 USHORT EventCategory
;
500 ULONG UniqueErrorValue
;
501 NTSTATUS FinalStatus
;
502 ULONG SequenceNumber
;
504 LARGE_INTEGER DeviceOffset
;
506 }IO_ERROR_LOG_PACKET
, *PIO_ERROR_LOG_PACKET
;
508 typedef struct _IO_ERROR_LOG_MESSAGE
512 USHORT DriverNameLength
;
513 LARGE_INTEGER TimeStamp
;
514 ULONG DriverNameOffset
;
515 IO_ERROR_LOG_PACKET EntryData
;
516 } IO_ERROR_LOG_MESSAGE
, *PIO_ERROR_LOG_MESSAGE
;
519 typedef struct _MAILSLOT_CREATE_PARAMETERS
522 ULONG MaximumMessageSize
;
523 LARGE_INTEGER ReadTimeout
;
524 BOOLEAN TimeoutSpecified
;
525 } MAILSLOT_CREATE_PARAMETERS
, *PMAILSLOT_CREATE_PARAMETERS
;
527 typedef struct _NAMED_PIPE_CREATE_PARAMETERS
531 ULONG CompletionMode
;
532 ULONG MaximumInstances
;
535 LARGE_INTEGER DefaultTimeout
;
536 BOOLEAN TimeoutSpecified
;
537 } NAMED_PIPE_CREATE_PARAMETERS
, *PNAMED_PIPE_CREATE_PARAMETERS
;
539 #ifndef NTOS_MODE_USER
540 typedef struct _IO_TIMER
544 LIST_ENTRY IoTimerList
;
545 PIO_TIMER_ROUTINE TimerRoutine
;
547 PDEVICE_OBJECT DeviceObject
;
548 } IO_TIMER
, *PIO_TIMER
;
550 typedef struct _DEVICE_NODE
552 struct _DEVICE_NODE
*Parent
;
553 struct _DEVICE_NODE
*PrevSibling
;
554 struct _DEVICE_NODE
*NextSibling
;
555 struct _DEVICE_NODE
*Child
;
557 struct _PO_DEVICE_NOTIFY
*Notify
;
558 PNP_DEVNODE_STATE State
;
559 PNP_DEVNODE_STATE PreviousState
;
560 PNP_DEVNODE_STATE StateHistory
[20];
561 ULONG StateHistoryEntry
;
562 INT CompletionStatus
;
567 PDEVICE_OBJECT PhysicalDeviceObject
;
568 PCM_RESOURCE_LIST ResourceList
;
569 PCM_RESOURCE_LIST ResourceListTranslated
;
570 UNICODE_STRING InstancePath
;
571 UNICODE_STRING ServiceName
;
572 PDEVICE_OBJECT DuplicatePDO
;
573 PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements
;
574 INTERFACE_TYPE InterfaceType
;
576 INTERFACE_TYPE ChildInterfaceType
;
577 ULONG ChildBusNumber
;
578 USHORT ChildBusTypeIndex
;
580 UCHAR HardwareRemovalPolicy
;
581 LIST_ENTRY TargetDeviceNotify
;
582 LIST_ENTRY DeviceArbiterList
;
583 LIST_ENTRY DeviceTranslatorList
;
584 USHORT NoTranslatorMask
;
585 USHORT QueryTranslatorMask
;
586 USHORT NoArbiterMask
;
587 USHORT QueryArbiterMask
;
590 struct _DEVICE_NODE
*LegacyDeviceNode
;
591 PDEVICE_RELATIONS PendingDeviceRelations
;
595 struct _DEVICE_NODE
*NextResourceDeviceNode
;
597 PCM_RESOURCE_LIST BootResources
;
598 ULONG CapabilityFlags
;
602 LIST_ENTRY ListEntry
;
605 ULONG DisableableDepends
;
606 LIST_ENTRY PendedSetInterfaceState
;
607 LIST_ENTRY LegacyBusListEntry
;
608 ULONG DriverUnloadRetryCount
;
609 struct _DEVICE_NODE
*PreviousParent
;
610 ULONG DeletedChidren
;
611 } DEVICE_NODE
, *PDEVICE_NODE
;
613 typedef struct _PI_RESOURCE_ARBITER_ENTRY
615 LIST_ENTRY DeviceArbiterList
;
617 PARBITER_INTERFACE ArbiterInterface
;
619 LIST_ENTRY ResourceList
;
620 LIST_ENTRY BestResourceList
;
621 LIST_ENTRY BestConfig
;
622 LIST_ENTRY ActiveArbiterList
;
624 UCHAR ResourcesChanged
;
625 } PI_RESOURCE_ARBITER_ENTRY
, *PPI_RESOURCE_ARBITER_ENTRY
;
627 typedef struct _EXTENDED_DEVOBJ_EXTENSION
631 PDEVICE_OBJECT DeviceObject
;
633 struct DEVICE_OBJECT_POWER_EXTENSION
*Dope
;
634 ULONG ExtensionFlags
;
635 struct _DEVICE_NODE
*DeviceNode
;
636 PDEVICE_OBJECT AttachedTo
;
641 } EXTENDED_DEVOBJ_EXTENSION
, *PEXTENDED_DEVOBJ_EXTENSION
;
643 typedef struct _PRIVATE_DRIVER_EXTENSIONS
645 struct _PRIVATE_DRIVER_EXTENSIONS
*Link
;
646 PVOID ClientIdentificationAddress
;
648 } PRIVATE_DRIVER_EXTENSIONS
, *PPRIVATE_DRIVER_EXTENSIONS
;
650 #if !defined(_ALPHA_)
651 #include <pshpack4.h>
653 typedef struct _EXTENDED_IO_STACK_LOCATION
663 PIO_SECURITY_CONTEXT SecurityContext
;
665 USHORT FileAttributes
;
671 PIO_SECURITY_CONTEXT SecurityContext
;
675 struct _NAMED_PIPE_CREATE_PARAMETERS
*Parameters
;
679 PIO_SECURITY_CONTEXT SecurityContext
;
683 struct _MAILSLOT_CREATE_PARAMETERS
*Parameters
;
689 LARGE_INTEGER ByteOffset
;
695 LARGE_INTEGER ByteOffset
;
700 PUNICODE_STRING FileName
;
701 FILE_INFORMATION_CLASS FileInformationClass
;
707 ULONG CompletionFilter
;
712 FILE_INFORMATION_CLASS FileInformationClass
;
717 FILE_INFORMATION_CLASS FileInformationClass
;
718 PFILE_OBJECT FileObject
;
723 BOOLEAN ReplaceIfExists
;
744 FS_INFORMATION_CLASS FsInformationClass
;
749 FS_INFORMATION_CLASS FsInformationClass
;
753 ULONG OutputBufferLength
;
754 ULONG InputBufferLength
;
756 PVOID Type3InputBuffer
;
760 PLARGE_INTEGER Length
;
762 LARGE_INTEGER ByteOffset
;
766 ULONG OutputBufferLength
;
767 ULONG InputBufferLength
;
769 PVOID Type3InputBuffer
;
773 SECURITY_INFORMATION SecurityInformation
;
774 ULONG POINTER_ALIGNMENT Length
;
778 SECURITY_INFORMATION SecurityInformation
;
779 PSECURITY_DESCRIPTOR SecurityDescriptor
;
784 PDEVICE_OBJECT DeviceObject
;
789 PDEVICE_OBJECT DeviceObject
;
793 struct _SCSI_REQUEST_BLOCK
*Srb
;
799 struct _FILE_GET_QUOTA_INFORMATION
*SidList
;
808 DEVICE_RELATION_TYPE Type
;
809 } QueryDeviceRelations
;
812 CONST GUID
*InterfaceType
;
815 PINTERFACE Interface
;
816 PVOID InterfaceSpecificData
;
820 PDEVICE_CAPABILITIES Capabilities
;
821 } DeviceCapabilities
;
824 PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList
;
825 } FilterResourceRequirements
;
839 BUS_QUERY_ID_TYPE IdType
;
843 DEVICE_TEXT_TYPE DeviceTextType
;
850 DEVICE_USAGE_NOTIFICATION_TYPE Type
;
854 SYSTEM_POWER_STATE PowerState
;
858 PPOWER_SEQUENCE PowerSequence
;
863 POWER_STATE_TYPE Type
;
865 POWER_ACTION ShutdownType
;
869 PCM_RESOURCE_LIST AllocatedResources
;
870 PCM_RESOURCE_LIST AllocatedResourcesTranslated
;
874 ULONG_PTR ProviderId
;
887 PDEVICE_OBJECT DeviceObject
;
888 PFILE_OBJECT FileObject
;
889 PIO_COMPLETION_ROUTINE CompletionRoutine
;
891 } EXTENDED_IO_STACK_LOCATION
, *PEXTENDED_IO_STACK_LOCATION
;
892 #if !defined(_ALPHA_)
897 /* FUNCTION TYPES ************************************************************/
900 (NTAPI
*PIO_APC_ROUTINE
)(
902 IN PIO_STATUS_BLOCK IoStatusBlock
,
905 /* I/O CONTROL CODES *********************************************************/
907 #ifdef NTOS_MODE_USER
909 #define FSCTL_MAILSLOT_PEEK \
910 CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
913 #define FSCTL_PIPE_ASSIGN_EVENT \
914 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
915 #define FSCTL_PIPE_DISCONNECT \
916 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
917 #define FSCTL_PIPE_LISTEN \
918 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
919 #define FSCTL_PIPE_PEEK \
920 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
921 #define FSCTL_PIPE_QUERY_EVENT \
922 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
923 #define FSCTL_PIPE_TRANSCEIVE \
924 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
925 #define FSCTL_PIPE_WAIT \
926 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
927 #define FSCTL_PIPE_IMPERSONATE \
928 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
929 #define FSCTL_PIPE_SET_CLIENT_PROCESS \
930 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
931 #define FSCTL_PIPE_QUERY_CLIENT_PROCESS \
932 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
933 #define FSCTL_PIPE_INTERNAL_READ \
934 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
935 #define FSCTL_PIPE_INTERNAL_WRITE \
936 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
937 #define FSCTL_PIPE_INTERNAL_TRANSCEIVE \
938 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
939 #define FSCTL_PIPE_INTERNAL_READ_OVFLOW \
940 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
943 #define IOCTL_TAPE_ERASE \
944 CTL_CODE(FILE_DEVICE_TAPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
945 #define IOCTL_TAPE_PREPARE \
946 CTL_CODE(FILE_DEVICE_TAPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS)
947 #define IOCTL_TAPE_WRITE_MARKS \
948 CTL_CODE(FILE_DEVICE_TAPE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
949 #define IOCTL_TAPE_GET_POSITION \
950 CTL_CODE(FILE_DEVICE_TAPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS)
951 #define IOCTL_TAPE_SET_POSITION \
952 CTL_CODE(FILE_DEVICE_TAPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS)
953 #define IOCTL_TAPE_GET_DRIVE_PARAMS \
954 CTL_CODE(FILE_DEVICE_TAPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS)
955 #define IOCTL_TAPE_SET_DRIVE_PARAMS \
956 CTL_CODE(FILE_DEVICE_TAPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
957 #define IOCTL_TAPE_GET_MEDIA_PARAMS \
958 CTL_CODE(FILE_DEVICE_TAPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS)
959 #define IOCTL_TAPE_SET_MEDIA_PARAMS \
960 CTL_CODE(FILE_DEVICE_TAPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
961 #define IOCTL_TAPE_GET_STATUS \
962 CTL_CODE(FILE_DEVICE_TAPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS)
963 #define IOCTL_TAPE_CREATE_PARTITION \
964 CTL_CODE(FILE_DEVICE_TAPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)