https://git.reactos.org/?p=reactos.git;a=commitdiff;h=8719252e48efe62e9c8c9…
commit 8719252e48efe62e9c8c9af0c0e70b2c2981fb9b
Author: Timo Kreuzer <timo.kreuzer(a)reactos.org>
AuthorDate: Fri Feb 16 21:32:46 2018 +0100
Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org>
CommitDate: Sun Jul 1 14:45:21 2018 +0200
[XDK][NDK] Fix IO_STACK_LOCATION alignments
* Also add missing DIRECTORY_NOTIFY_INFORMATION_CLASS
---
sdk/include/ndk/iotypes.h | 74 +++++++++++++++++++++++++----------------------
sdk/include/xdk/iotypes.h | 41 ++++++++++++++++++++++----
2 files changed, 75 insertions(+), 40 deletions(-)
diff --git a/sdk/include/ndk/iotypes.h b/sdk/include/ndk/iotypes.h
index 0124da6125..ed4a9facc2 100644
--- a/sdk/include/ndk/iotypes.h
+++ b/sdk/include/ndk/iotypes.h
@@ -940,9 +940,6 @@ typedef struct _EXTENDED_DRIVER_EXTENSION
//
// Extended I/O Stack Location Structure
//
-#if !defined(_ALPHA_)
-#include <pshpack4.h>
-#endif
typedef struct _EXTENDED_IO_STACK_LOCATION
{
UCHAR MajorFunction;
@@ -955,15 +952,15 @@ typedef struct _EXTENDED_IO_STACK_LOCATION
{
PIO_SECURITY_CONTEXT SecurityContext;
ULONG Options;
- USHORT FileAttributes;
+ USHORT POINTER_ALIGNMENT FileAttributes;
USHORT ShareAccess;
- ULONG EaLength;
+ ULONG POINTER_ALIGNMENT EaLength;
} Create;
struct
{
PIO_SECURITY_CONTEXT SecurityContext;
ULONG Options;
- USHORT Reserved;
+ USHORT POINTER_ALIGNMENT Reserved;
USHORT ShareAccess;
struct _NAMED_PIPE_CREATE_PARAMETERS *Parameters;
} CreatePipe;
@@ -971,20 +968,20 @@ typedef struct _EXTENDED_IO_STACK_LOCATION
{
PIO_SECURITY_CONTEXT SecurityContext;
ULONG Options;
- USHORT Reserved;
+ USHORT POINTER_ALIGNMENT Reserved;
USHORT ShareAccess;
struct _MAILSLOT_CREATE_PARAMETERS *Parameters;
} CreateMailslot;
struct
{
ULONG Length;
- ULONG Key;
+ ULONG POINTER_ALIGNMENT Key;
LARGE_INTEGER ByteOffset;
} Read;
struct
{
ULONG Length;
- ULONG Key;
+ ULONG POINTER_ALIGNMENT Key;
LARGE_INTEGER ByteOffset;
} Write;
struct
@@ -992,23 +989,29 @@ typedef struct _EXTENDED_IO_STACK_LOCATION
ULONG Length;
PUNICODE_STRING FileName;
FILE_INFORMATION_CLASS FileInformationClass;
- ULONG FileIndex;
+ ULONG POINTER_ALIGNMENT FileIndex;
} QueryDirectory;
struct
{
ULONG Length;
- ULONG CompletionFilter;
+ ULONG POINTER_ALIGNMENT CompletionFilter;
} NotifyDirectory;
struct
{
ULONG Length;
- FILE_INFORMATION_CLASS FileInformationClass;
+ ULONG POINTER_ALIGNMENT CompletionFilter;
+ enum _DIRECTORY_NOTIFY_INFORMATION_CLASS POINTER_ALIGNMENT
DirectoryNotifyInformationClass;
+ } NotifyDirectoryEx;
+ struct
+ {
+ ULONG Length;
+ FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
} QueryFile;
struct
{
ULONG Length;
- FILE_INFORMATION_CLASS FileInformationClass;
- PFILE_OBJECT FileObject;
+ FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
+ PFILE_OBJECT FileObject;
union
{
struct
@@ -1025,7 +1028,7 @@ typedef struct _EXTENDED_IO_STACK_LOCATION
ULONG Length;
PVOID EaList;
ULONG EaListLength;
- ULONG EaIndex;
+ ULONG POINTER_ALIGNMENT EaIndex;
} QueryEa;
struct
{
@@ -1034,31 +1037,31 @@ typedef struct _EXTENDED_IO_STACK_LOCATION
struct
{
ULONG Length;
- FS_INFORMATION_CLASS FsInformationClass;
+ FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass;
} QueryVolume;
struct
{
ULONG Length;
- FS_INFORMATION_CLASS FsInformationClass;
+ FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass;
} SetVolume;
struct
{
ULONG OutputBufferLength;
- ULONG InputBufferLength;
- ULONG FsControlCode;
+ ULONG POINTER_ALIGNMENT InputBufferLength;
+ ULONG POINTER_ALIGNMENT FsControlCode;
PVOID Type3InputBuffer;
} FileSystemControl;
struct
{
PLARGE_INTEGER Length;
- ULONG Key;
+ ULONG POINTER_ALIGNMENT Key;
LARGE_INTEGER ByteOffset;
} LockControl;
struct
{
ULONG OutputBufferLength;
- ULONG InputBufferLength;
- ULONG IoControlCode;
+ ULONG POINTER_ALIGNMENT InputBufferLength;
+ ULONG POINTER_ALIGNMENT IoControlCode;
PVOID Type3InputBuffer;
} DeviceIoControl;
struct
@@ -1121,7 +1124,7 @@ typedef struct _EXTENDED_IO_STACK_LOCATION
ULONG WhichSpace;
PVOID Buffer;
ULONG Offset;
- ULONG Length;
+ ULONG POINTER_ALIGNMENT Length;
} ReadWriteConfig;
struct
{
@@ -1134,28 +1137,34 @@ typedef struct _EXTENDED_IO_STACK_LOCATION
struct
{
DEVICE_TEXT_TYPE DeviceTextType;
- LCID LocaleId;
+ LCID POINTER_ALIGNMENT LocaleId;
} QueryDeviceText;
struct
{
BOOLEAN InPath;
BOOLEAN Reserved[3];
- DEVICE_USAGE_NOTIFICATION_TYPE Type;
+ DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT Type;
} UsageNotification;
struct
{
- SYSTEM_POWER_STATE PowerState;
+ SYSTEM_POWER_STATE PowerState;
} WaitWake;
struct
{
- PPOWER_SEQUENCE PowerSequence;
+ PPOWER_SEQUENCE PowerSequence;
} PowerSequence;
struct
{
- ULONG SystemContext;
- POWER_STATE_TYPE Type;
- POWER_STATE State;
- POWER_ACTION ShutdownType;
+ union
+ {
+ ULONG SystemContext;
+#if (NTDDI_VERSION >= NTDDI_VISTA)
+ SYSTEM_POWER_STATE_CONTEXT SystemPowerStateContext;
+#endif // (NTDDI_VERSION >= NTDDI_VISTA)
+ };
+ POWER_STATE_TYPE POINTER_ALIGNMENT Type;
+ POWER_STATE POINTER_ALIGNMENT State;
+ POWER_ACTION POINTER_ALIGNMENT ShutdownType;
} Power;
struct
{
@@ -1182,9 +1191,6 @@ typedef struct _EXTENDED_IO_STACK_LOCATION
PIO_COMPLETION_ROUTINE CompletionRoutine;
PVOID Context;
} EXTENDED_IO_STACK_LOCATION, *PEXTENDED_IO_STACK_LOCATION;
-#if !defined(_ALPHA_)
-#include <poppack.h>
-#endif
#endif
//
diff --git a/sdk/include/xdk/iotypes.h b/sdk/include/xdk/iotypes.h
index d9032b7255..d2a76b8451 100644
--- a/sdk/include/xdk/iotypes.h
+++ b/sdk/include/xdk/iotypes.h
@@ -1272,6 +1272,11 @@ typedef enum _FILE_INFORMATION_CLASS {
FileMaximumInformation
} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
+typedef enum _DIRECTORY_NOTIFY_INFORMATION_CLASS {
+ DirectoryNotifyInformation = 1,
+ DirectoryNotifyExtendedInformation
+} DIRECTORY_NOTIFY_INFORMATION_CLASS, *PDIRECTORY_NOTIFY_INFORMATION_CLASS;
+
typedef struct _FILE_POSITION_INFORMATION {
LARGE_INTEGER CurrentByteOffset;
} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
@@ -2754,6 +2759,20 @@ typedef struct _IO_STACK_LOCATION {
USHORT ShareAccess;
ULONG POINTER_ALIGNMENT EaLength;
} Create;
+ struct {
+ struct _IO_SECURITY_CONTEXT *SecurityContext;
+ ULONG Options;
+ USHORT POINTER_ALIGNMENT Reserved;
+ USHORT ShareAccess;
+ struct _NAMED_PIPE_CREATE_PARAMETERS *Parameters;
+ } CreatePipe;
+ struct {
+ PIO_SECURITY_CONTEXT SecurityContext;
+ ULONG Options;
+ USHORT POINTER_ALIGNMENT Reserved;
+ USHORT ShareAccess;
+ struct _MAILSLOT_CREATE_PARAMETERS *Parameters;
+ } CreateMailslot;
struct {
ULONG Length;
ULONG POINTER_ALIGNMENT Key;
@@ -2768,12 +2787,17 @@ typedef struct _IO_STACK_LOCATION {
ULONG Length;
PUNICODE_STRING FileName;
FILE_INFORMATION_CLASS FileInformationClass;
- ULONG FileIndex;
+ ULONG POINTER_ALIGNMENT FileIndex;
} QueryDirectory;
struct {
ULONG Length;
- ULONG CompletionFilter;
+ ULONG POINTER_ALIGNMENT CompletionFilter;
} NotifyDirectory;
+ struct {
+ ULONG Length;
+ ULONG POINTER_ALIGNMENT CompletionFilter;
+ DIRECTORY_NOTIFY_INFORMATION_CLASS POINTER_ALIGNMENT
DirectoryNotifyInformationClass;
+ } NotifyDirectoryEx;
struct {
ULONG Length;
FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
@@ -2795,7 +2819,7 @@ typedef struct _IO_STACK_LOCATION {
ULONG Length;
PVOID EaList;
ULONG EaListLength;
- ULONG EaIndex;
+ ULONG POINTER_ALIGNMENT EaIndex;
} QueryEa;
struct {
ULONG Length;
@@ -2806,7 +2830,7 @@ typedef struct _IO_STACK_LOCATION {
} QueryVolume;
struct {
ULONG Length;
- FS_INFORMATION_CLASS FsInformationClass;
+ FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass;
} SetVolume;
struct {
ULONG OutputBufferLength;
@@ -2816,7 +2840,7 @@ typedef struct _IO_STACK_LOCATION {
} FileSystemControl;
struct {
PLARGE_INTEGER Length;
- ULONG Key;
+ ULONG POINTER_ALIGNMENT Key;
LARGE_INTEGER ByteOffset;
} LockControl;
struct {
@@ -2897,7 +2921,12 @@ typedef struct _IO_STACK_LOCATION {
PPOWER_SEQUENCE PowerSequence;
} PowerSequence;
struct {
- ULONG SystemContext;
+ union {
+ ULONG SystemContext;
+#if (NTDDI_VERSION >= NTDDI_VISTA)
+ SYSTEM_POWER_STATE_CONTEXT SystemPowerStateContext;
+#endif // (NTDDI_VERSION >= NTDDI_VISTA)
+ };
POWER_STATE_TYPE POINTER_ALIGNMENT Type;
POWER_STATE POINTER_ALIGNMENT State;
POWER_ACTION POINTER_ALIGNMENT ShutdownType;