| #ifndef Py_WINREPARSE_H |
| #define Py_WINREPARSE_H |
| |
| #ifdef MS_WINDOWS |
| #include <windows.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* The following structure was copied from |
| http://msdn.microsoft.com/en-us/library/ff552012.aspx as the required |
| include km\ntifs.h isn't present in the Windows SDK (at least as included |
| with Visual Studio Express). Use unique names to avoid conflicting with |
| the structure as defined by Min GW. */ |
| typedef struct { |
| ULONG ReparseTag; |
| USHORT ReparseDataLength; |
| USHORT Reserved; |
| union { |
| struct { |
| USHORT SubstituteNameOffset; |
| USHORT SubstituteNameLength; |
| USHORT PrintNameOffset; |
| USHORT PrintNameLength; |
| ULONG Flags; |
| WCHAR PathBuffer[1]; |
| } SymbolicLinkReparseBuffer; |
| |
| struct { |
| USHORT SubstituteNameOffset; |
| USHORT SubstituteNameLength; |
| USHORT PrintNameOffset; |
| USHORT PrintNameLength; |
| WCHAR PathBuffer[1]; |
| } MountPointReparseBuffer; |
| |
| struct { |
| UCHAR DataBuffer[1]; |
| } GenericReparseBuffer; |
| }; |
| } _Py_REPARSE_DATA_BUFFER, *_Py_PREPARSE_DATA_BUFFER; |
| |
| #define _Py_REPARSE_DATA_BUFFER_HEADER_SIZE \ |
| FIELD_OFFSET(_Py_REPARSE_DATA_BUFFER, GenericReparseBuffer) |
| #define _Py_MAXIMUM_REPARSE_DATA_BUFFER_SIZE ( 16 * 1024 ) |
| |
| // Defined in WinBase.h in 'recent' versions of Windows 10 SDK |
| #ifndef SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE |
| #define SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE 0x2 |
| #endif |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* MS_WINDOWS */ |
| |
| #endif /* !Py_WINREPARSE_H */ |