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

Function shCustomGetFileAttributesExW

source/dllmain.cpp:2969–2997  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2967 }
2968
2969 BOOL WINAPI shCustomGetFileAttributesExW(LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation)
2970 {
2971 auto raddr = _ReturnAddress();
2972 auto bRecursive = isRecursive(raddr);
2973 if (!bRecursive && HasVirtualFiles() && IsVirtualFile(lpFileName))
2974 {
2975 if (auto virtualFile = GetVirtualFileByPath(lpFileName))
2976 {
2977 if (fInfoLevelId == GetFileExInfoStandard && lpFileInformation)
2978 {
2979 auto* fileAttributeData = static_cast<LPWIN32_FILE_ATTRIBUTE_DATA>(lpFileInformation);
2980 uint64_t fileSize = virtualFile->GetSize();
2981
2982 fileAttributeData->dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
2983 fileAttributeData->ftCreationTime = virtualFile->creationTime;
2984 fileAttributeData->ftLastAccessTime = virtualFile->lastAccessTime;
2985 fileAttributeData->ftLastWriteTime = virtualFile->lastWriteTime;
2986 fileAttributeData->nFileSizeLow = static_cast<DWORD>(fileSize & 0xFFFFFFFF);
2987 fileAttributeData->nFileSizeHigh = static_cast<DWORD>(fileSize >> 32);
2988 return TRUE;
2989 }
2990 }
2991 SetLastError(ERROR_FILE_NOT_FOUND);
2992 return FALSE;
2993 }
2994
2995 auto r = GetFilePathForOverload(lpFileName, bRecursive);
2996 return mhGetFileAttributesExW->get_original<decltype(GetFileAttributesExW)>()(value_orW(r, lpFileName), fInfoLevelId, lpFileInformation);
2997 }
2998
2999 HANDLE WINAPI shCustomFindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData)
3000 {

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