Pjeroo
@Pjeroo
Веб-разработчик

Приведение типов для WinAPI функций в Qt

Собственно есть такой код, который неверно работает в Qt Creator:

unsigned __int64 FreeBytesToCaller, TotalBytes, FreeBytes;

????? WinApiLibrary::GetHardDriveInfo(int flag)
{
    GetDiskFreeSpaceEx((LPCTSTR)"c:\\", (PULARGE_INTEGER)&FreeBytesToCaller, (PULARGE_INTEGER)&TotalBytes, (PULARGE_INTEGER)&FreeBytes);
    switch (flag)
    {
    case 1:
        return FreeBytesToCaller;
        break;
    case 2:
        return TotalBytes;
        break;
    case 3:
        return FreeBytes;
        break;
    }
}

Вызываю так:
qDebug() << wl.GetHardDriveInfo(1);

Вместо вопросов ставил все, что только можно (ULARGE_INTEGER, PULARGE_INTEGER, unsigned __int64) и всегда вместо нормального значения получаются какие-то левые. Кстати, в кодблоксе такой код работает нормально:
unsigned __int64 i64FreeBytesToCaller,
                       i64TotalBytes,
                       i64FreeBytes;

    GetDiskFreeSpaceEx ("c:/",
                                 (PULARGE_INTEGER)&i64FreeBytesToCaller,
                                 (PULARGE_INTEGER)&i64TotalBytes,
                                 (PULARGE_INTEGER)&i64FreeBytes);

    cout << i64FreeBytes/1024/1024 << "/" << i64TotalBytes/1024/1024 << '\n';
  • Вопрос задан
  • 2894 просмотра
Решения вопроса 1
@Beltoev
Живу в своё удовольствие
long long GetHardDriveInfo(int flag)
{
	ULARGE_INTEGER FreeBytesToCaller, TotalBytes, FreeBytes;
    GetDiskFreeSpaceEx(TEXT("c:\\"), &FreeBytesToCaller, &TotalBytes, &FreeBytes);
    switch (flag)
    {
    case 1:
        return FreeBytesToCaller.QuadPart;
        break;
    case 2:
        return TotalBytes.QuadPart;
        break;
    case 3:
        return FreeBytes.QuadPart;
        break;
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы