MCPcopy Create free account
hub / github.com/ThirteenAG/Ultimate-ASI-Loader / shCustomGetFileAttributesExA

Function shCustomGetFileAttributesExA

source/dllmain.cpp:2940–2967  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2938 }
2939
2940 BOOL WINAPI shCustomGetFileAttributesExA(LPCSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation)
2941 {
2942 auto raddr = _ReturnAddress();
2943 auto bRecursive = isRecursive(raddr);
2944 if (!bRecursive && HasVirtualFiles() && IsVirtualFile(lpFileName))
2945 {
2946 if (auto virtualFile = GetVirtualFileByPath(lpFileName))
2947 {
2948 if (fInfoLevelId == GetFileExInfoStandard && lpFileInformation)
2949 {
2950 auto* fileAttributeData = static_cast<LPWIN32_FILE_ATTRIBUTE_DATA>(lpFileInformation);
2951 uint64_t fileSize = virtualFile->GetSize();
2952
2953 fileAttributeData->dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
2954 fileAttributeData->ftCreationTime = virtualFile->creationTime;
2955 fileAttributeData->ftLastAccessTime = virtualFile->lastAccessTime;
2956 fileAttributeData->ftLastWriteTime = virtualFile->lastWriteTime;
2957 fileAttributeData->nFileSizeLow = static_cast<DWORD>(fileSize & 0xFFFFFFFF);
2958 fileAttributeData->nFileSizeHigh = static_cast<DWORD>(fileSize >> 32);
2959 return TRUE;
2960 }
2961 }
2962 SetLastError(ERROR_FILE_NOT_FOUND);
2963 return FALSE;
2964 }
2965 auto r = GetFilePathForOverload(lpFileName, bRecursive);
2966 return mhGetFileAttributesExA->get_original<decltype(GetFileAttributesExA)>()(value_orA(r, lpFileName), fInfoLevelId, lpFileInformation);
2967 }
2968
2969 BOOL WINAPI shCustomGetFileAttributesExW(LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation)
2970 {

Callers

nothing calls this directly

Calls 6

isRecursiveFunction · 0.85
HasVirtualFilesFunction · 0.85
IsVirtualFileFunction · 0.85
GetVirtualFileByPathFunction · 0.85
GetFilePathForOverloadFunction · 0.85
GetSizeMethod · 0.45

Tested by

no test coverage detected