MCPcopy Create free account
hub / github.com/DiscordMessenger/dm / UploadDialogTryReadFile

Function UploadDialogTryReadFile

src/windows/UploadDialog.cpp:102–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

100}
101
102int UploadDialogTryReadFile(LPCTSTR pszFileName, DWORD& dwFileSize, BYTE*& pbFileData)
103{
104 HANDLE hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
105 if (hFile == INVALID_HANDLE_VALUE)
106 return RFE_CANTOPEN;
107
108 bool bReadFailed = false;
109 dwFileSize = GetFileSize(hFile, NULL);
110 if (dwFileSize == INVALID_FILE_SIZE)
111 return FailAndClose(hFile, RFE_FILETOOBIG);
112
113 if (dwFileSize == 0)
114 return FailAndClose(hFile, RFE_FILEEMPTY);
115
116 if (dwFileSize > C_FILE_MAX_SIZE)
117 return FailAndClose(hFile, RFE_FILETOOBIG);
118
119 pbFileData = new(std::nothrow) BYTE[dwFileSize];
120 if (!pbFileData)
121 return FailAndClose(hFile, RFE_NOMEMORY);
122
123 DWORD bytesRead = 0;
124 if (!ReadFile(hFile, pbFileData, dwFileSize, &bytesRead, NULL))
125 return FailDeallocAndClose(hFile, pbFileData, RFE_CANTREAD);
126
127 if (bytesRead != dwFileSize)
128 return FailDeallocAndClose(hFile, pbFileData, RFE_CANTREAD);
129
130 CloseHandle(hFile);
131 return RFE_SUCCESS;
132}
133
134INT_PTR CALLBACK UploadDialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
135{

Callers 1

UploadDialogProcFunction · 0.85

Calls 2

FailAndCloseFunction · 0.85
FailDeallocAndCloseFunction · 0.85

Tested by

no test coverage detected