- Fix incompatible IO_STACK_LOCATION definition in W32api ddk/winddk.k
[reactos.git] / reactos / include / ndk / iotypes.h
index ad4283d..ce8f96b 100644 (file)
@@ -647,6 +647,252 @@ typedef struct _PRIVATE_DRIVER_EXTENSIONS
     PVOID ClientIdentificationAddress;
     CHAR Extension[1];
 } PRIVATE_DRIVER_EXTENSIONS, *PPRIVATE_DRIVER_EXTENSIONS;
+
+#if !defined(_ALPHA_)
+#include <pshpack4.h>
+#endif
+typedef struct _EXTENDED_IO_STACK_LOCATION
+{
+    UCHAR MajorFunction;
+    UCHAR MinorFunction;
+    UCHAR Flags;
+    UCHAR Control;
+    union
+    {
+        struct
+        {
+            PIO_SECURITY_CONTEXT SecurityContext;
+            ULONG Options;
+            USHORT FileAttributes;
+            USHORT ShareAccess;
+            ULONG EaLength;
+        } Create;
+        struct
+        {
+            PIO_SECURITY_CONTEXT SecurityContext;
+            ULONG Options;
+            USHORT Reserved;
+            USHORT ShareAccess;
+            struct _NAMED_PIPE_CREATE_PARAMETERS *Parameters;
+        } CreatePipe;
+        struct
+        {
+            PIO_SECURITY_CONTEXT SecurityContext;
+            ULONG Options;
+            USHORT Reserved;
+            USHORT ShareAccess;
+            struct _MAILSLOT_CREATE_PARAMETERS *Parameters;
+        } CreateMailslot;
+        struct
+        {
+            ULONG Length;
+            ULONG Key;
+            LARGE_INTEGER ByteOffset;
+        } Read;
+        struct
+        {
+            ULONG Length;
+            ULONG Key;
+            LARGE_INTEGER ByteOffset;
+        } Write;
+        struct
+        {
+            ULONG Length;
+            PUNICODE_STRING FileName;
+            FILE_INFORMATION_CLASS FileInformationClass;
+            ULONG FileIndex;
+        } QueryDirectory;
+        struct
+        {
+            ULONG Length;
+            ULONG CompletionFilter;
+        } NotifyDirectory;
+        struct
+        {
+            ULONG Length;
+            FILE_INFORMATION_CLASS FileInformationClass;
+        } QueryFile;
+        struct
+        {
+            ULONG Length;
+            FILE_INFORMATION_CLASS FileInformationClass;
+            PFILE_OBJECT  FileObject;
+            union
+            {
+                struct
+                {
+                    BOOLEAN ReplaceIfExists;
+                    BOOLEAN AdvanceOnly;
+                };
+                ULONG ClusterCount;
+                HANDLE DeleteHandle;
+            };
+        } SetFile;
+        struct
+        {
+            ULONG Length;
+            PVOID EaList;
+            ULONG EaListLength;
+            ULONG EaIndex;
+        } QueryEa;
+        struct
+        {
+            ULONG Length;
+        } SetEa;
+        struct
+        {
+            ULONG Length;
+            FS_INFORMATION_CLASS FsInformationClass;
+        } QueryVolume;
+        struct
+        {
+            ULONG Length;
+            FS_INFORMATION_CLASS FsInformationClass;
+        } SetVolume;
+        struct
+        {
+            ULONG OutputBufferLength;
+            ULONG InputBufferLength;
+            ULONG FsControlCode;
+            PVOID Type3InputBuffer;
+        } FileSystemControl;
+        struct
+        {
+            PLARGE_INTEGER Length;
+            ULONG Key;
+            LARGE_INTEGER ByteOffset;
+        } LockControl;
+        struct
+        {
+            ULONG OutputBufferLength;
+            ULONG InputBufferLength;
+            ULONG IoControlCode;
+            PVOID Type3InputBuffer;
+        } DeviceIoControl;
+        struct
+        {
+            SECURITY_INFORMATION SecurityInformation;
+            ULONG POINTER_ALIGNMENT Length;
+        } QuerySecurity;
+        struct
+        {
+            SECURITY_INFORMATION SecurityInformation;
+            PSECURITY_DESCRIPTOR SecurityDescriptor;
+        } SetSecurity;
+        struct
+        {
+            PVPB Vpb;
+            PDEVICE_OBJECT DeviceObject;
+        } MountVolume;
+        struct
+        {
+            PVPB Vpb;
+            PDEVICE_OBJECT DeviceObject;
+        } VerifyVolume;
+        struct
+        {
+            struct _SCSI_REQUEST_BLOCK *Srb;
+        } Scsi;
+        struct
+        {
+            ULONG Length;
+            PSID StartSid;
+            struct _FILE_GET_QUOTA_INFORMATION *SidList;
+            ULONG SidListLength;
+        } QueryQuota;
+        struct
+        {
+            ULONG Length;
+        } SetQuota;
+        struct
+        {
+            DEVICE_RELATION_TYPE Type;
+        } QueryDeviceRelations;
+        struct
+        {
+            CONST GUID *InterfaceType;
+            USHORT Size;
+            USHORT Version;
+            PINTERFACE Interface;
+            PVOID InterfaceSpecificData;
+        } QueryInterface;
+        struct
+        {
+            PDEVICE_CAPABILITIES Capabilities;
+        } DeviceCapabilities;
+        struct
+        {
+            PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList;
+        } FilterResourceRequirements;
+        struct
+        {
+            ULONG WhichSpace;
+            PVOID Buffer;
+            ULONG Offset;
+            ULONG Length;
+        } ReadWriteConfig;
+        struct
+        {
+            BOOLEAN Lock;
+        } SetLock;
+        struct
+        {
+            BUS_QUERY_ID_TYPE IdType;
+        } QueryId;
+        struct
+        {
+            DEVICE_TEXT_TYPE DeviceTextType;
+            LCID LocaleId;
+        } QueryDeviceText;
+        struct
+        {
+            BOOLEAN InPath;
+            BOOLEAN Reserved[3];
+            DEVICE_USAGE_NOTIFICATION_TYPE Type;
+        } UsageNotification;
+        struct
+        {
+            SYSTEM_POWER_STATE  PowerState;
+        } WaitWake;
+        struct
+        {
+            PPOWER_SEQUENCE  PowerSequence;
+        } PowerSequence;
+        struct
+        {
+            ULONG SystemContext;
+            POWER_STATE_TYPE Type;
+            POWER_STATE State;
+            POWER_ACTION ShutdownType;
+        } Power;
+        struct
+        {
+            PCM_RESOURCE_LIST AllocatedResources;
+            PCM_RESOURCE_LIST AllocatedResourcesTranslated;
+        } StartDevice;
+        struct
+        {
+            ULONG_PTR ProviderId;
+            PVOID DataPath;
+            ULONG BufferSize;
+            PVOID Buffer;
+        } WMI;
+        struct
+        {
+            PVOID Argument1;
+            PVOID Argument2;
+            PVOID Argument3;
+            PVOID Argument4;
+        } Others;
+    } Parameters;
+    PDEVICE_OBJECT DeviceObject;
+    PFILE_OBJECT FileObject;
+    PIO_COMPLETION_ROUTINE CompletionRoutine;
+    PVOID Context;
+} IO_STACK_LOCATION, *PIO_STACK_LOCATION;
+#if !defined(_ALPHA_)
+#include <poppack.h>
+#endif
 #endif
 
 /* FUNCTION TYPES ************************************************************/