| 6 | |
| 7 | typedef struct { DWORD size; PBYTE pbufr; }FILEINFO; |
| 8 | FILEINFO OpenfileA(char* ptrFile) |
| 9 | { |
| 10 | DWORD dwReadTotal = 0; |
| 11 | DWORD dwReaded = 0; |
| 12 | FILEINFO fileinfo = { 0 }; |
| 13 | HANDLE hFile = NULL; |
| 14 | hFile = CreateFileA(ptrFile, FILE_SHARE_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); |
| 15 | if (hFile == INVALID_HANDLE_VALUE) |
| 16 | goto FAISE; |
| 17 | fileinfo.size = GetFileSize(hFile, NULL); |
| 18 | if (fileinfo.size == 0) |
| 19 | goto FAISE; |
| 20 | fileinfo.pbufr = (byte*)HeapAlloc(GetProcessHeap(), 0, fileinfo.size); |
| 21 | if (fileinfo.pbufr == 0) |
| 22 | goto FAISE; |
| 23 | SecureZeroMemory(fileinfo.pbufr, fileinfo.size); |
| 24 | |
| 25 | while (dwReadTotal < fileinfo.size |
| 26 | && ReadFile(hFile, fileinfo.pbufr + dwReadTotal, fileinfo.size - dwReadTotal, &dwReaded, NULL)) |
| 27 | { |
| 28 | dwReadTotal += dwReaded; |
| 29 | } |
| 30 | FAISE: |
| 31 | if (hFile != INVALID_HANDLE_VALUE) |
| 32 | { |
| 33 | CloseHandle(hFile); |
| 34 | } |
| 35 | return fileinfo; |
| 36 | }; |
| 37 | |
| 38 | void* MMcpy(void* dst, const void* src, size_t len) |
| 39 | { |