Тема: Дивина з GetFileSizeEx
Повертає TRUE , але в LARGE_INTEGER розмір лівий, 49 кілобайт при розмірі файла більше 13 мегабайт.
void LoadIpData(wchar_t *dataPlace, std::vector <std::string> &data)
{
HANDLE f = CreateFile(dataPlace, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (f != INVALID_HANDLE_VALUE)
{
LARGE_INTEGER *sz = new LARGE_INTEGER;
GetFileSizeEx(f, sz);
unsigned char *buf = new unsigned char[sz->QuadPart];
DWORD r = 0;
ReadFile(f, buf, sz->QuadPart, &r, 0);
__int64 totalSize = sz->QuadPart;
unsigned char partSize = 0;
char ip[16];
printf("H: %d L: %d Q: %d\n",sz->HighPart, sz->LowPart, sz->QuadPart);
//printf("%d\n%d", r, sz->QuadPart);
_getch();
for (;;)
{
partSize = buf[0];
printf("%X", buf[0]); _getch();
buf += 1;
totalSize = totalSize - 1;
memset(ip, 0, 16);
memcpy(ip, buf, partSize);
buf += partSize;
totalSize = totalSize - partSize;
data.push_back(std::string(ip));
if (totalSize < 1) { break; }
}
buf-= sz->QuadPart;
delete[]buf;
delete sz;
}
else
{
printf("%d", GetLastError());
}
CloseHandle(f);
}