1219 |
|
#define FILE_MAP_WRITE SECTION_MAP_WRITE |
1220 |
|
#define FILE_MAP_READ SECTION_MAP_READ |
1221 |
|
#define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS |
1222 |
|
#define FILE_MAP_EXECUTE SECTION_MAP_EXECUTE_EXPLICIT // not included in FILE_MAP_ALL_ACCESS |
1223 |
|
|
1224 |
|
#define OF_READ 0x00000000 |
1225 |
|
#define OF_WRITE 0x00000001 |
1226 |
|
#define OF_READWRITE 0x00000002 |
1227 |
|
#define OF_SHARE_COMPAT 0x00000000 |
1228 |
|
#define OF_SHARE_EXCLUSIVE 0x00000010 |
1229 |
|
#define OF_SHARE_DENY_WRITE 0x00000020 |
1230 |
|
#define OF_SHARE_DENY_READ 0x00000030 |
1231 |
|
#define OF_SHARE_DENY_NONE 0x00000040 |
1232 |
|
#define OF_PARSE 0x00000100 |
1233 |
|
#define OF_DELETE 0x00000200 |
1234 |
|
#define OF_VERIFY 0x00000400 |
1235 |
|
#define OF_CANCEL 0x00000800 |
1236 |
|
#define OF_CREATE 0x00001000 |
1237 |
|
#define OF_PROMPT 0x00002000 |
1238 |
|
#define OF_EXIST 0x00004000 |
1239 |
|
#define OF_REOPEN 0x00008000 |
1240 |
|
|
1241 |
|
#define OFS_MAXPATHNAME 128 |
1242 |
|
typedef struct _OFSTRUCT { |
1243 |
|
BYTE cBytes; |
1244 |
|
BYTE fFixedDisk; |
1245 |
|
WORD nErrCode; |
1246 |
|
WORD Reserved1; |
1247 |
|
WORD Reserved2; |
1248 |
|
CHAR szPathName[OFS_MAXPATHNAME]; |
1249 |
|
} OFSTRUCT, *LPOFSTRUCT, *POFSTRUCT; |
1250 |
|
|
1251 |
|
#ifndef NOWINBASEINTERLOCK |
1252 |
|
|
1253 |
|
#ifndef _NTOS_ |
1254 |
|
|
1255 |
|
#if defined(_M_IA64) && !defined(RC_INVOKED) |
1256 |
|
|
1257 |
|
#define InterlockedIncrement _InterlockedIncrement |
1258 |
|
#define InterlockedIncrementAcquire _InterlockedIncrement_acq |
1259 |
|
#define InterlockedIncrementRelease _InterlockedIncrement_rel |
1260 |
|
#define InterlockedDecrement _InterlockedDecrement |
1261 |
|
#define InterlockedDecrementAcquire _InterlockedDecrement_acq |
1262 |
|
#define InterlockedDecrementRelease _InterlockedDecrement_rel |
1263 |
|
#define InterlockedExchange _InterlockedExchange |
1264 |
|
#define InterlockedExchangeAdd _InterlockedExchangeAdd |
1265 |
|
#define InterlockedCompareExchange _InterlockedCompareExchange |
1266 |
|
#define InterlockedCompareExchangeAcquire _InterlockedCompareExchange_acq |
1267 |
|
#define InterlockedCompareExchangeRelease _InterlockedCompareExchange_rel |
1268 |
|
#define InterlockedExchangePointer _InterlockedExchangePointer |
1269 |
|
#define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer |
1270 |
|
#define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer_rel |
1271 |
|
#define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer_acq |
1272 |
|
|
1273 |
|
#define InterlockedIncrement64 _InterlockedIncrement64 |
1274 |
|
#define InterlockedDecrement64 _InterlockedDecrement64 |
1275 |
|
#define InterlockedExchange64 _InterlockedExchange64 |
1276 |
|
#define InterlockedExchangeAcquire64 _InterlockedExchange64_acq |
1277 |
|
#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 |
1278 |
|
#define InterlockedCompareExchange64 _InterlockedCompareExchange64 |
1279 |
|
#define InterlockedCompareExchangeAcquire64 _InterlockedCompareExchange64_acq |
1280 |
|
#define InterlockedCompareExchangeRelease64 _InterlockedCompareExchange64_rel |
1281 |
|
#define InterlockedCompare64Exchange128 _InterlockedCompare64Exchange128 |
1282 |
|
#define InterlockedCompare64ExchangeAcquire128 _InterlockedCompare64Exchange128_acq |
1283 |
|
#define InterlockedCompare64ExchangeRelease128 _InterlockedCompare64Exchange128_rel |
1284 |
|
|
1285 |
|
#define InterlockedOr _InterlockedOr |
1286 |
|
#define InterlockedOrAcquire _InterlockedOr_acq |
1287 |
|
#define InterlockedOrRelease _InterlockedOr_rel |
1288 |
|
#define InterlockedOr8 _InterlockedOr8 |
1289 |
|
#define InterlockedOr8Acquire _InterlockedOr8_acq |
1290 |
|
#define InterlockedOr8Release _InterlockedOr8_rel |
1291 |
|
#define InterlockedOr16 _InterlockedOr16 |
1292 |
|
#define InterlockedOr16Acquire _InterlockedOr16_acq |
1293 |
|
#define InterlockedOr16Release _InterlockedOr16_rel |
1294 |
|
#define InterlockedOr64 _InterlockedOr64 |
1295 |
|
#define InterlockedOr64Acquire _InterlockedOr64_acq |
1296 |
|
#define InterlockedOr64Release _InterlockedOr64_rel |
1297 |
|
#define InterlockedXor _InterlockedXor |
1298 |
|
#define InterlockedXorAcquire _InterlockedXor_acq |
1299 |
|
#define InterlockedXorRelease _InterlockedXor_rel |
1300 |
|
#define InterlockedXor8 _InterlockedXor8 |
1301 |
|
#define InterlockedXor8Acquire _InterlockedXor8_acq |
1302 |
|
#define InterlockedXor8Release _InterlockedXor8_rel |
1303 |
|
#define InterlockedXor16 _InterlockedXor16 |
1304 |
|
#define InterlockedXor16Acquire _InterlockedXor16_acq |
1305 |
|
#define InterlockedXor16Release _InterlockedXor16_rel |
1306 |
|
#define InterlockedXor64 _InterlockedXor64 |
1307 |
|
#define InterlockedXor64Acquire _InterlockedXor64_acq |
1308 |
|
#define InterlockedXor64Release _InterlockedXor64_rel |
1309 |
|
#define InterlockedAnd _InterlockedAnd |
1310 |
|
#define InterlockedAndAcquire _InterlockedAnd_acq |
1311 |
|
#define InterlockedAndRelease _InterlockedAnd_rel |
1312 |
|
#define InterlockedAnd8 _InterlockedAnd8 |
1313 |
|
#define InterlockedAnd8Acquire _InterlockedAnd8_acq |
1314 |
|
#define InterlockedAnd8Release _InterlockedAnd8_rel |
1315 |
|
#define InterlockedAnd16 _InterlockedAnd16 |
1316 |
|
#define InterlockedAnd16Acquire _InterlockedAnd16_acq |
1317 |
|
#define InterlockedAnd16Release _InterlockedAnd16_rel |
1318 |
|
#define InterlockedAnd64 _InterlockedAnd64 |
2007 |
|
#pragma intrinsic (_InterlockedOr8_acq) |
2008 |
|
#pragma intrinsic (_InterlockedOr8_rel) |
2009 |
|
#pragma intrinsic (_InterlockedOr16) |
2010 |
|
#pragma intrinsic (_InterlockedOr16_acq) |
2011 |
|
#pragma intrinsic (_InterlockedOr16_rel) |
2012 |
|
#pragma intrinsic (_InterlockedOr64) |
2013 |
|
#pragma intrinsic (_InterlockedOr64_acq) |
2014 |
|
#pragma intrinsic (_InterlockedOr64_rel) |
2015 |
|
#pragma intrinsic (_InterlockedXor) |
2016 |
|
#pragma intrinsic (_InterlockedXor_acq) |
2017 |
|
#pragma intrinsic (_InterlockedXor_rel) |
2018 |
|
#pragma intrinsic (_InterlockedXor8) |
2019 |
|
#pragma intrinsic (_InterlockedXor8_acq) |
2020 |
|
#pragma intrinsic (_InterlockedXor8_rel) |
2021 |
|
#pragma intrinsic (_InterlockedXor16) |
2022 |
|
#pragma intrinsic (_InterlockedXor16_acq) |
2023 |
|
#pragma intrinsic (_InterlockedXor16_rel) |
2024 |
|
#pragma intrinsic (_InterlockedXor64) |
2025 |
|
#pragma intrinsic (_InterlockedXor64_acq) |
2026 |
|
#pragma intrinsic (_InterlockedXor64_rel) |
2027 |
|
#pragma intrinsic (_InterlockedAnd) |
2028 |
|
#pragma intrinsic (_InterlockedAnd_acq) |
2029 |
|
#pragma intrinsic (_InterlockedAnd_rel) |
2030 |
|
#pragma intrinsic (_InterlockedAnd8) |
2031 |
|
#pragma intrinsic (_InterlockedAnd8_acq) |
2032 |
|
#pragma intrinsic (_InterlockedAnd8_rel) |
2033 |
|
#pragma intrinsic (_InterlockedAnd16) |
2034 |
|
#pragma intrinsic (_InterlockedAnd16_acq) |
2035 |
|
#pragma intrinsic (_InterlockedAnd16_rel) |
2036 |
|
#pragma intrinsic (_InterlockedAnd64) |
2037 |
|
#pragma intrinsic (_InterlockedAnd64_acq) |
2038 |
|
#pragma intrinsic (_InterlockedAnd64_rel) |
2039 |
|
|
2040 |
|
#elif defined(_M_AMD64) && !defined(RC_INVOKED) |
2041 |
|
|
2042 |
|
#define InterlockedAnd _InterlockedAnd |
2043 |
|
#define InterlockedOr _InterlockedOr |
2044 |
|
#define InterlockedXor _InterlockedXor |
2045 |
|
#define InterlockedIncrement _InterlockedIncrement |
2046 |
|
#define InterlockedIncrementAcquire InterlockedIncrement |
2047 |
|
#define InterlockedIncrementRelease InterlockedIncrement |
2048 |
|
#define InterlockedDecrement _InterlockedDecrement |
2049 |
|
#define InterlockedDecrementAcquire InterlockedDecrement |
2050 |
|
#define InterlockedDecrementRelease InterlockedDecrement |
2051 |
|
#define InterlockedExchange _InterlockedExchange |
2052 |
|
#define InterlockedExchangeAdd _InterlockedExchangeAdd |
2053 |
|
#define InterlockedCompareExchange _InterlockedCompareExchange |
2054 |
|
#define InterlockedCompareExchangeAcquire InterlockedCompareExchange |
2055 |
|
#define InterlockedCompareExchangeRelease InterlockedCompareExchange |
2056 |
|
#define InterlockedExchangePointer _InterlockedExchangePointer |
2057 |
|
#define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer |
2058 |
|
#define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer |
2059 |
|
#define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer |
2060 |
|
|
2061 |
|
#define InterlockedAnd64 _InterlockedAnd64 |
2062 |
|
#define InterlockedOr64 _InterlockedOr64 |
2063 |
|
#define InterlockedXor64 _InterlockedXor64 |
2064 |
|
#define InterlockedIncrement64 _InterlockedIncrement64 |
2065 |
|
#define InterlockedDecrement64 _InterlockedDecrement64 |
2066 |
|
#define InterlockedExchange64 _InterlockedExchange64 |
2067 |
|
#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 |
2068 |
|
#define InterlockedCompareExchange64 _InterlockedCompareExchange64 |
2069 |
|
#define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64 |
2070 |
|
#define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64 |
2071 |
|
|
2072 |
|
|
2073 |
|
LONG |
2074 |
|
InterlockedAnd ( |
2075 |
|
__inout LONG volatile *Destination, |
2076 |
|
__in LONG Value |
2077 |
|
); |
2078 |
|
|
2079 |
|
LONG |
2080 |
|
InterlockedOr ( |
2081 |
|
__inout LONG volatile *Destination, |
2082 |
|
__in LONG Value |
2083 |
|
); |
2084 |
|
|
2085 |
|
LONG |
2086 |
|
InterlockedXor ( |
2087 |
|
__inout LONG volatile *Destination, |
2088 |
|
__in LONG Value |
2089 |
|
); |
2090 |
|
|
2091 |
|
LONG |
2092 |
|
InterlockedIncrement ( |
2093 |
|
__inout LONG volatile *Addend |
2094 |
|
); |
2095 |
|
|
2096 |
|
LONG |
2097 |
|
InterlockedDecrement ( |
2098 |
|
__inout LONG volatile *Addend |
2099 |
|
); |
2100 |
|
|
2101 |
|
LONG |
2102 |
|
InterlockedExchange ( |
2103 |
|
__inout LONG volatile *Target, |
2104 |
|
__in LONG Value |
2105 |
|
); |
2106 |
|
|
2107 |
|
LONG |
2108 |
|
InterlockedExchangeAdd ( |
2109 |
|
__inout LONG volatile *Addend, |
2110 |
|
__in LONG Value |
2111 |
|
); |
2112 |
|
|
2113 |
|
LONG |
2114 |
|
InterlockedCompareExchange ( |
2115 |
|
__inout LONG volatile *Destination, |
2116 |
|
__in LONG ExChange, |
2117 |
|
__in LONG Comperand |
2118 |
|
); |
2119 |
|
|
2120 |
|
PVOID |
2121 |
|
InterlockedCompareExchangePointer ( |
2122 |
|
__inout PVOID volatile *Destination, |
2123 |
|
__in_opt PVOID Exchange, |
2124 |
|
__in_opt PVOID Comperand |
2125 |
|
); |
2126 |
|
|
2127 |
|
PVOID |
2128 |
|
InterlockedExchangePointer ( |
2129 |
|
__inout PVOID volatile *Target, |
2130 |
|
__in_opt PVOID Value |
2131 |
|
); |
2132 |
|
|
2133 |
|
LONG64 |
2134 |
|
InterlockedAnd64 ( |
2135 |
|
__inout LONG64 volatile *Destination, |
2136 |
|
__in LONG64 Value |
2137 |
|
); |
2138 |
|
|
2139 |
|
LONG64 |
2140 |
|
InterlockedOr64 ( |
2141 |
|
__inout LONG64 volatile *Destination, |
2142 |
|
__in LONG64 Value |
2143 |
|
); |
2144 |
|
|
2145 |
|
LONG64 |
2146 |
|
InterlockedXor64 ( |
2147 |
|
__inout LONG64 volatile *Destination, |
2148 |
|
__in LONG64 Value |
2149 |
|
); |
2150 |
|
|
2151 |
|
LONG64 |
2152 |
|
InterlockedIncrement64 ( |
2153 |
|
__inout LONG64 volatile *Addend |
2154 |
|
); |
2155 |
|
|
2156 |
|
LONG64 |
2157 |
|
InterlockedDecrement64 ( |
2158 |
|
__inout LONG64 volatile *Addend |
2159 |
|
); |
2160 |
|
|
2161 |
|
LONG64 |
2162 |
|
InterlockedExchange64 ( |
2163 |
|
__inout LONG64 volatile *Target, |
2164 |
|
__in LONG64 Value |
2165 |
|
); |
2166 |
|
|
2167 |
|
LONG64 |
2168 |
|
InterlockedExchangeAdd64 ( |
2169 |
|
__inout LONG64 volatile *Addend, |
2170 |
|
__in LONG64 Value |
2171 |
|
); |
2172 |
|
|
2173 |
|
LONG64 |
2174 |
|
InterlockedCompareExchange64 ( |
2175 |
|
__inout LONG64 volatile *Destination, |
2176 |
|
__in LONG64 ExChange, |
2177 |
|
__in LONG64 Comperand |
2178 |
|
); |
2179 |
|
|
2180 |
|
#pragma intrinsic(_InterlockedAnd) |
2181 |
|
#pragma intrinsic(_InterlockedOr) |
2182 |
|
#pragma intrinsic(_InterlockedXor) |
2183 |
|
#pragma intrinsic(_InterlockedIncrement) |
2184 |
|
#pragma intrinsic(_InterlockedDecrement) |
2185 |
|
#pragma intrinsic(_InterlockedExchange) |
2186 |
|
#pragma intrinsic(_InterlockedExchangeAdd) |
2187 |
|
#pragma intrinsic(_InterlockedCompareExchange) |
2188 |
|
#pragma intrinsic(_InterlockedExchangePointer) |
2189 |
|
#pragma intrinsic(_InterlockedCompareExchangePointer) |
2190 |
|
#pragma intrinsic(_InterlockedAnd64) |
2191 |
|
#pragma intrinsic(_InterlockedOr64) |
2192 |
|
#pragma intrinsic(_InterlockedXor64) |
2193 |
|
#pragma intrinsic(_InterlockedIncrement64) |
2194 |
|
#pragma intrinsic(_InterlockedDecrement64) |
2195 |
|
#pragma intrinsic(_InterlockedExchange64) |
2196 |
|
#pragma intrinsic(_InterlockedExchangeAdd64) |
2197 |
|
#pragma intrinsic(_InterlockedCompareExchange64) |
2198 |
|
|
2199 |
|
#if _MSC_FULL_VER >= 140041204 |
2200 |
|
|
2201 |
|
#define InterlockedAnd8 _InterlockedAnd8 |
2202 |
|
#define InterlockedOr8 _InterlockedOr8 |
2203 |
|
#define InterlockedXor8 _InterlockedXor8 |
2204 |
|
#define InterlockedAnd16 _InterlockedAnd16 |
2205 |
|
#define InterlockedOr16 _InterlockedOr16 |
2206 |
|
#define InterlockedXor16 _InterlockedXor16 |
2207 |
|
|
2208 |
|
char |
2209 |
|
InterlockedAnd8 ( |
2210 |
|
__inout char volatile *Destination, |
2211 |
|
__in char Value |
2212 |
|
); |
2213 |
|
|
2214 |
|
char |
2215 |
|
InterlockedOr8 ( |
2216 |
|
__inout char volatile *Destination, |
2217 |
|
__in char Value |
2218 |
|
); |
2219 |
|
|
2220 |
|
char |
2221 |
|
InterlockedXor8 ( |
2222 |
|
__inout char volatile *Destination, |
2223 |
|
__in char Value |
2224 |
|
); |
2225 |
|
|
2226 |
|
SHORT |
2227 |
|
InterlockedAnd16( |
2228 |
|
__inout SHORT volatile *Destination, |
2229 |
|
__in SHORT Value |
2230 |
|
); |
2231 |
|
|
2232 |
|
SHORT |
2233 |
|
InterlockedOr16( |
2234 |
|
__inout SHORT volatile *Destination, |
2235 |
|
__in SHORT Value |
2236 |
|
); |
2237 |
|
|
2238 |
|
SHORT |
2239 |
|
InterlockedXor16( |
2240 |
|
__inout SHORT volatile *Destination, |
2241 |
|
__in SHORT Value |
2242 |
|
); |
2243 |
|
|
2244 |
|
#pragma intrinsic (_InterlockedAnd8) |
2245 |
|
#pragma intrinsic (_InterlockedOr8) |
2246 |
|
#pragma intrinsic (_InterlockedXor8) |
2247 |
|
#pragma intrinsic (_InterlockedAnd16) |
2248 |
|
#pragma intrinsic (_InterlockedOr16) |
2249 |
|
#pragma intrinsic (_InterlockedXor16) |
2250 |
|
|
2251 |
|
#endif |
2252 |
|
|
2253 |
|
#else // X86 interlocked definitions |
2254 |
|
|
2255 |
|
WINBASEAPI |
2256 |
|
LONG |
2257 |
|
WINAPI |
2258 |
|
InterlockedIncrement ( |
2259 |
|
__inout LONG volatile *lpAddend |
2260 |
|
); |
2261 |
|
|
2262 |
|
WINBASEAPI |
2263 |
|
LONG |
2264 |
|
WINAPI |
2265 |
|
InterlockedDecrement ( |
2266 |
|
__inout LONG volatile *lpAddend |
2267 |
|
); |
2268 |
|
|
2269 |
|
WINBASEAPI |
2270 |
|
LONG |
2271 |
|
WINAPI |
2272 |
|
InterlockedExchange ( |
2273 |
|
__inout LONG volatile *Target, |
2274 |
|
__in LONG Value |
2275 |
|
); |
2276 |
|
|
2277 |
|
#define InterlockedExchangePointer(Target, Value) \ |
2278 |
|
(PVOID)InterlockedExchange((PLONG)(Target), (LONG)(Value)) |
2279 |
|
|
2280 |
|
WINBASEAPI |
2281 |
|
LONG |
2282 |
|
WINAPI |
2283 |
|
InterlockedExchangeAdd ( |
2284 |
|
__inout LONG volatile *Addend, |
2285 |
|
__in LONG Value |
2286 |
|
); |
2287 |
|
|
2288 |
|
WINBASEAPI |
2289 |
|
LONG |
2290 |
|
WINAPI |
2291 |
|
InterlockedCompareExchange ( |
2292 |
|
__inout LONG volatile *Destination, |
2293 |
|
__in LONG Exchange, |
2294 |
|
__in LONG Comperand |
2295 |
|
); |
2296 |
|
|
2297 |
|
#if (_WIN32_WINNT >= 0x0502) |
2298 |
|
|
2299 |
|
WINBASEAPI |
2300 |
|
LONGLONG |
2301 |
|
WINAPI |
2302 |
|
InterlockedCompareExchange64 ( |
2303 |
|
__inout LONGLONG volatile *Destination, |
2304 |
|
__in LONGLONG Exchange, |
2305 |
|
__in LONGLONG Comperand |
2306 |
|
); |
2307 |
|
|
2308 |
|
#endif |
2309 |
|
|
2310 |
|
#if !defined(MIDL_PASS) |
2311 |
|
|
2312 |
|
#if (_WIN32_WINNT >= 0x0502) |
2313 |
|
|
2314 |
|
FORCEINLINE |
2315 |
|
LONGLONG |
2316 |
|
InterlockedAnd64 ( |
2317 |
|
__inout LONGLONG volatile *Destination, |
2318 |
|
__in LONGLONG Value |
2319 |
|
) |
2320 |
|
{ |
2321 |
|
LONGLONG Old; |
2322 |
|
|
2323 |
|
do { |
2324 |
|
Old = *Destination; |
2325 |
|
} while (InterlockedCompareExchange64(Destination, |
2326 |
|
Old & Value, |
2327 |
|
Old) != Old); |