comparison src/os_win32.h @ 28702:99729fe344f7 v8.2.4875

patch 8.2.4875: MS-Windows: some .exe files are not recognized Commit: https://github.com/vim/vim/commit/40fd7e665260c9227d6d90b17a301a1bc47f7f5b Author: LemonBoy <thatlemon@gmail.com> Date: Thu May 5 20:18:16 2022 +0100 patch 8.2.4875: MS-Windows: some .exe files are not recognized Problem: MS-Windows: some .exe files are not recognized. Solution: Parse APPEXECLINK junctions. (closes https://github.com/vim/vim/issues/10302)
author Bram Moolenaar <Bram@vim.org>
date Thu, 05 May 2022 21:30:03 +0200
parents 4f1c67a5f446
children faf7fcd1c8d5
comparison
equal deleted inserted replaced
28701:a4b92f0c0002 28702:99729fe344f7
124 # define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003 124 # define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003
125 #endif 125 #endif
126 #ifndef IO_REPARSE_TAG_SYMLINK 126 #ifndef IO_REPARSE_TAG_SYMLINK
127 # define IO_REPARSE_TAG_SYMLINK 0xA000000C 127 # define IO_REPARSE_TAG_SYMLINK 0xA000000C
128 #endif 128 #endif
129 #ifndef IO_REPARSE_TAG_APPEXECLINK
130 # define IO_REPARSE_TAG_APPEXECLINK 0x8000001B
131 #endif
132
133 /*
134 * Definition of the reparse point buffer.
135 * This is usually defined in the DDK, copy the definition here to avoid
136 * adding it as a dependence only for a single structure.
137 */
138 typedef struct _REPARSE_DATA_BUFFER {
139 ULONG ReparseTag;
140 USHORT ReparseDataLength;
141 USHORT Reserved;
142 union {
143 struct {
144 USHORT SubstituteNameOffset;
145 USHORT SubstituteNameLength;
146 USHORT PrintNameOffset;
147 USHORT PrintNameLength;
148 ULONG Flags;
149 WCHAR PathBuffer[1];
150 } SymbolicLinkReparseBuffer;
151 struct {
152 USHORT SubstituteNameOffset;
153 USHORT SubstituteNameLength;
154 USHORT PrintNameOffset;
155 USHORT PrintNameLength;
156 WCHAR PathBuffer[1];
157 } MountPointReparseBuffer;
158 struct {
159 UCHAR DataBuffer[1];
160 } GenericReparseBuffer;
161 struct
162 {
163 ULONG StringCount;
164 WCHAR StringList[1];
165 } AppExecLinkReparseBuffer;
166 } DUMMYUNIONNAME;
167 } REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
129 168
130 #ifdef _MSC_VER 169 #ifdef _MSC_VER
131 // Support for __try / __except. All versions of MSVC are 170 // Support for __try / __except. All versions of MSVC are
132 // expected to have this. Any other compilers that support it? 171 // expected to have this. Any other compilers that support it?
133 # define HAVE_TRY_EXCEPT 1 172 # define HAVE_TRY_EXCEPT 1