| 100 | } |
| 101 | |
| 102 | int 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 | |
| 134 | INT_PTR CALLBACK UploadDialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) |
| 135 | { |
no test coverage detected