diff options
| author | Igor Pavlov <87184205+ip7z@users.noreply.github.com> | 2023-06-21 00:00:00 +0000 |
|---|---|---|
| committer | Igor Pavlov <87184205+ip7z@users.noreply.github.com> | 2023-12-17 14:59:19 +0500 |
| commit | 5b39dc76f1bc82f941d5c800ab9f34407a06b53a (patch) | |
| tree | fe5e17420300b715021a76328444088d32047963 /CPP/Windows/Net.cpp | |
| parent | 93be7d4abfd4233228f58ee1fbbcd76d91be66a4 (diff) | |
| download | 7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.tar.gz 7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.tar.bz2 7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.zip | |
23.0123.01
Diffstat (limited to 'CPP/Windows/Net.cpp')
| -rw-r--r-- | CPP/Windows/Net.cpp | 56 |
1 files changed, 42 insertions, 14 deletions
diff --git a/CPP/Windows/Net.cpp b/CPP/Windows/Net.cpp index 2a3952a..0ac82d4 100644 --- a/CPP/Windows/Net.cpp +++ b/CPP/Windows/Net.cpp | |||
| @@ -14,13 +14,41 @@ | |||
| 14 | extern bool g_IsNT; | 14 | extern bool g_IsNT; |
| 15 | #endif | 15 | #endif |
| 16 | 16 | ||
| 17 | extern "C" | ||
| 18 | { | ||
| 19 | #if !defined(WNetGetResourceParent) | ||
| 20 | // #if defined(Z7_OLD_WIN_SDK) | ||
| 21 | // #if (WINVER >= 0x0400) | ||
| 22 | DWORD APIENTRY WNetGetResourceParentA(IN LPNETRESOURCEA lpNetResource, | ||
| 23 | OUT LPVOID lpBuffer, IN OUT LPDWORD lpcbBuffer); | ||
| 24 | DWORD APIENTRY WNetGetResourceParentW(IN LPNETRESOURCEW lpNetResource, | ||
| 25 | OUT LPVOID lpBuffer, IN OUT LPDWORD lpcbBuffer); | ||
| 26 | #ifdef UNICODE | ||
| 27 | #define WNetGetResourceParent WNetGetResourceParentW | ||
| 28 | #else | ||
| 29 | #define WNetGetResourceParent WNetGetResourceParentA | ||
| 30 | #endif | ||
| 31 | |||
| 32 | DWORD APIENTRY WNetGetResourceInformationA(IN LPNETRESOURCEA lpNetResource, | ||
| 33 | OUT LPVOID lpBuffer, IN OUT LPDWORD lpcbBuffer, OUT LPSTR *lplpSystem); | ||
| 34 | DWORD APIENTRY WNetGetResourceInformationW(IN LPNETRESOURCEW lpNetResource, | ||
| 35 | OUT LPVOID lpBuffer, IN OUT LPDWORD lpcbBuffer, OUT LPWSTR *lplpSystem); | ||
| 36 | #ifdef UNICODE | ||
| 37 | #define WNetGetResourceInformation WNetGetResourceInformationW | ||
| 38 | #else | ||
| 39 | #define WNetGetResourceInformation WNetGetResourceInformationA | ||
| 40 | #endif | ||
| 41 | // #endif // (WINVER >= 0x0400) | ||
| 42 | #endif | ||
| 43 | } | ||
| 44 | |||
| 17 | namespace NWindows { | 45 | namespace NWindows { |
| 18 | namespace NNet { | 46 | namespace NNet { |
| 19 | 47 | ||
| 20 | DWORD CEnum::Open(DWORD scope, DWORD type, DWORD usage, LPNETRESOURCE netResource) | 48 | DWORD CEnum::Open(DWORD scope, DWORD type, DWORD usage, LPNETRESOURCE netResource) |
| 21 | { | 49 | { |
| 22 | Close(); | 50 | Close(); |
| 23 | DWORD result = ::WNetOpenEnum(scope, type, usage, netResource, &_handle); | 51 | const DWORD result = ::WNetOpenEnum(scope, type, usage, netResource, &_handle); |
| 24 | _handleAllocated = (result == NO_ERROR); | 52 | _handleAllocated = (result == NO_ERROR); |
| 25 | return result; | 53 | return result; |
| 26 | } | 54 | } |
| @@ -29,7 +57,7 @@ DWORD CEnum::Open(DWORD scope, DWORD type, DWORD usage, LPNETRESOURCE netResourc | |||
| 29 | DWORD CEnum::Open(DWORD scope, DWORD type, DWORD usage, LPNETRESOURCEW netResource) | 57 | DWORD CEnum::Open(DWORD scope, DWORD type, DWORD usage, LPNETRESOURCEW netResource) |
| 30 | { | 58 | { |
| 31 | Close(); | 59 | Close(); |
| 32 | DWORD result = ::WNetOpenEnumW(scope, type, usage, netResource, &_handle); | 60 | const DWORD result = ::WNetOpenEnumW(scope, type, usage, netResource, &_handle); |
| 33 | _handleAllocated = (result == NO_ERROR); | 61 | _handleAllocated = (result == NO_ERROR); |
| 34 | return result; | 62 | return result; |
| 35 | } | 63 | } |
| @@ -37,7 +65,7 @@ DWORD CEnum::Open(DWORD scope, DWORD type, DWORD usage, LPNETRESOURCEW netResour | |||
| 37 | 65 | ||
| 38 | static void SetComplexString(bool &defined, CSysString &destString, LPCTSTR srcString) | 66 | static void SetComplexString(bool &defined, CSysString &destString, LPCTSTR srcString) |
| 39 | { | 67 | { |
| 40 | defined = (srcString != 0); | 68 | defined = (srcString != NULL); |
| 41 | if (defined) | 69 | if (defined) |
| 42 | destString = srcString; | 70 | destString = srcString; |
| 43 | else | 71 | else |
| @@ -179,7 +207,7 @@ DWORD CEnum::Close() | |||
| 179 | { | 207 | { |
| 180 | if (!_handleAllocated) | 208 | if (!_handleAllocated) |
| 181 | return NO_ERROR; | 209 | return NO_ERROR; |
| 182 | DWORD result = ::WNetCloseEnum(_handle); | 210 | const DWORD result = ::WNetCloseEnum(_handle); |
| 183 | _handleAllocated = (result != NO_ERROR); | 211 | _handleAllocated = (result != NO_ERROR); |
| 184 | return result; | 212 | return result; |
| 185 | } | 213 | } |
| @@ -204,7 +232,7 @@ DWORD CEnum::Next(CResource &resource) | |||
| 204 | ZeroMemory(lpnrLocal, kBufferSize); | 232 | ZeroMemory(lpnrLocal, kBufferSize); |
| 205 | DWORD bufferSize = kBufferSize; | 233 | DWORD bufferSize = kBufferSize; |
| 206 | DWORD numEntries = 1; | 234 | DWORD numEntries = 1; |
| 207 | DWORD result = Next(&numEntries, lpnrLocal, &bufferSize); | 235 | const DWORD result = Next(&numEntries, lpnrLocal, &bufferSize); |
| 208 | if (result != NO_ERROR) | 236 | if (result != NO_ERROR) |
| 209 | return result; | 237 | return result; |
| 210 | if (numEntries != 1) | 238 | if (numEntries != 1) |
| @@ -224,7 +252,7 @@ DWORD CEnum::Next(CResourceW &resource) | |||
| 224 | ZeroMemory(lpnrLocal, kBufferSize); | 252 | ZeroMemory(lpnrLocal, kBufferSize); |
| 225 | DWORD bufferSize = kBufferSize; | 253 | DWORD bufferSize = kBufferSize; |
| 226 | DWORD numEntries = 1; | 254 | DWORD numEntries = 1; |
| 227 | DWORD result = NextW(&numEntries, lpnrLocal, &bufferSize); | 255 | const DWORD result = NextW(&numEntries, lpnrLocal, &bufferSize); |
| 228 | if (result != NO_ERROR) | 256 | if (result != NO_ERROR) |
| 229 | return result; | 257 | return result; |
| 230 | if (numEntries != 1) | 258 | if (numEntries != 1) |
| @@ -233,7 +261,7 @@ DWORD CEnum::Next(CResourceW &resource) | |||
| 233 | return result; | 261 | return result; |
| 234 | } | 262 | } |
| 235 | CResource resourceA; | 263 | CResource resourceA; |
| 236 | DWORD result = Next(resourceA); | 264 | const DWORD result = Next(resourceA); |
| 237 | ConvertResourceToResourceW(resourceA, resource); | 265 | ConvertResourceToResourceW(resourceA, resource); |
| 238 | return result; | 266 | return result; |
| 239 | } | 267 | } |
| @@ -249,7 +277,7 @@ DWORD GetResourceParent(const CResource &resource, CResource &parentResource) | |||
| 249 | DWORD bufferSize = kBufferSize; | 277 | DWORD bufferSize = kBufferSize; |
| 250 | NETRESOURCE netResource; | 278 | NETRESOURCE netResource; |
| 251 | ConvertCResourceToNETRESOURCE(resource, netResource); | 279 | ConvertCResourceToNETRESOURCE(resource, netResource); |
| 252 | DWORD result = ::WNetGetResourceParent(&netResource, lpnrLocal, &bufferSize); | 280 | const DWORD result = ::WNetGetResourceParent(&netResource, lpnrLocal, &bufferSize); |
| 253 | if (result != NO_ERROR) | 281 | if (result != NO_ERROR) |
| 254 | return result; | 282 | return result; |
| 255 | ConvertNETRESOURCEToCResource(lpnrLocal[0], parentResource); | 283 | ConvertNETRESOURCEToCResource(lpnrLocal[0], parentResource); |
| @@ -268,7 +296,7 @@ DWORD GetResourceParent(const CResourceW &resource, CResourceW &parentResource) | |||
| 268 | DWORD bufferSize = kBufferSize; | 296 | DWORD bufferSize = kBufferSize; |
| 269 | NETRESOURCEW netResource; | 297 | NETRESOURCEW netResource; |
| 270 | ConvertCResourceToNETRESOURCE(resource, netResource); | 298 | ConvertCResourceToNETRESOURCE(resource, netResource); |
| 271 | DWORD result = ::WNetGetResourceParentW(&netResource, lpnrLocal, &bufferSize); | 299 | const DWORD result = ::WNetGetResourceParentW(&netResource, lpnrLocal, &bufferSize); |
| 272 | if (result != NO_ERROR) | 300 | if (result != NO_ERROR) |
| 273 | return result; | 301 | return result; |
| 274 | ConvertNETRESOURCEToCResource(lpnrLocal[0], parentResource); | 302 | ConvertNETRESOURCEToCResource(lpnrLocal[0], parentResource); |
| @@ -276,7 +304,7 @@ DWORD GetResourceParent(const CResourceW &resource, CResourceW &parentResource) | |||
| 276 | } | 304 | } |
| 277 | CResource resourceA, parentResourceA; | 305 | CResource resourceA, parentResourceA; |
| 278 | ConvertResourceWToResource(resource, resourceA); | 306 | ConvertResourceWToResource(resource, resourceA); |
| 279 | DWORD result = GetResourceParent(resourceA, parentResourceA); | 307 | const DWORD result = GetResourceParent(resourceA, parentResourceA); |
| 280 | ConvertResourceToResourceW(parentResourceA, parentResource); | 308 | ConvertResourceToResourceW(parentResourceA, parentResource); |
| 281 | return result; | 309 | return result; |
| 282 | } | 310 | } |
| @@ -293,11 +321,11 @@ DWORD GetResourceInformation(const CResource &resource, | |||
| 293 | NETRESOURCE netResource; | 321 | NETRESOURCE netResource; |
| 294 | ConvertCResourceToNETRESOURCE(resource, netResource); | 322 | ConvertCResourceToNETRESOURCE(resource, netResource); |
| 295 | LPTSTR lplpSystem; | 323 | LPTSTR lplpSystem; |
| 296 | DWORD result = ::WNetGetResourceInformation(&netResource, | 324 | const DWORD result = ::WNetGetResourceInformation(&netResource, |
| 297 | lpnrLocal, &bufferSize, &lplpSystem); | 325 | lpnrLocal, &bufferSize, &lplpSystem); |
| 298 | if (result != NO_ERROR) | 326 | if (result != NO_ERROR) |
| 299 | return result; | 327 | return result; |
| 300 | if (lplpSystem != 0) | 328 | if (lplpSystem != NULL) |
| 301 | systemPathPart = lplpSystem; | 329 | systemPathPart = lplpSystem; |
| 302 | ConvertNETRESOURCEToCResource(lpnrLocal[0], destResource); | 330 | ConvertNETRESOURCEToCResource(lpnrLocal[0], destResource); |
| 303 | return result; | 331 | return result; |
| @@ -317,7 +345,7 @@ DWORD GetResourceInformation(const CResourceW &resource, | |||
| 317 | NETRESOURCEW netResource; | 345 | NETRESOURCEW netResource; |
| 318 | ConvertCResourceToNETRESOURCE(resource, netResource); | 346 | ConvertCResourceToNETRESOURCE(resource, netResource); |
| 319 | LPWSTR lplpSystem; | 347 | LPWSTR lplpSystem; |
| 320 | DWORD result = ::WNetGetResourceInformationW(&netResource, | 348 | const DWORD result = ::WNetGetResourceInformationW(&netResource, |
| 321 | lpnrLocal, &bufferSize, &lplpSystem); | 349 | lpnrLocal, &bufferSize, &lplpSystem); |
| 322 | if (result != NO_ERROR) | 350 | if (result != NO_ERROR) |
| 323 | return result; | 351 | return result; |
| @@ -329,7 +357,7 @@ DWORD GetResourceInformation(const CResourceW &resource, | |||
| 329 | CResource resourceA, destResourceA; | 357 | CResource resourceA, destResourceA; |
| 330 | ConvertResourceWToResource(resource, resourceA); | 358 | ConvertResourceWToResource(resource, resourceA); |
| 331 | AString systemPathPartA; | 359 | AString systemPathPartA; |
| 332 | DWORD result = GetResourceInformation(resourceA, destResourceA, systemPathPartA); | 360 | const DWORD result = GetResourceInformation(resourceA, destResourceA, systemPathPartA); |
| 333 | ConvertResourceToResourceW(destResourceA, destResource); | 361 | ConvertResourceToResourceW(destResourceA, destResource); |
| 334 | systemPathPart = GetUnicodeString(systemPathPartA); | 362 | systemPathPart = GetUnicodeString(systemPathPartA); |
| 335 | return result; | 363 | return result; |
