- Fix incompatible IO_STACK_LOCATION definition in W32api ddk/winddk.k
authorAlex Ionescu <aionescu@gmail.com>
Sun, 4 Sep 2005 22:16:57 +0000 (22:16 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Sun, 4 Sep 2005 22:16:57 +0000 (22:16 +0000)
- Add EXTENDED_IO_STACK_LOCATION to NDK, with the full definition.

svn path=/trunk/; revision=17645

reactos/include/ndk/iotypes.h
reactos/w32api/include/ddk/winddk.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 ************************************************************/
index 10f7894..256c87a 100644 (file)
@@ -3180,22 +3180,6 @@ typedef struct _IO_STACK_LOCATION {
       USHORT  ShareAccess;
       ULONG POINTER_ALIGNMENT  EaLength;
     } Create;
-    /* FIXME: CreatePipe and CreateMailslot aren't defined in official
-     * DDK/IFS headers. */
-    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 POINTER_ALIGNMENT  Key;