Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GetDiskFreeSpaceEx, Проблема с соответсвием действительности 
V
    Опции темы
GremlinProg
Дата 8.10.2009, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



а что ты ожидаешь от этого кода?

ed1, ed2, ed3 тут вроде бы вообще не используются,
ведь в них ты и сохраняешь результаты работы функции GetDiskFreeSpaceEx
выведи их в memo или список или уж на худой конец - через _RPT, в консоль отладчика, чтобы увидеть их воочию
или я что-то пропустил?


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
rAccOOn
Дата 9.10.2009, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 8.1.2009

Репутация: нет
Всего: нет



Ну к примеру вот так я выводил 
Код

            list_a.AddString(ed1);
            list_a.AddString(ed2);
            list_a.AddString(ed3);

и получал
user posted image

А вот Everest да и так еси посмотреть получаеться должно быть всего  50 006 мб, и свободно 14 с хвостом гиг.
Но все равно в паредке вывода идет сначала общий обьем памяти потом свободный и доступный, а получаеться что общий меньше свободного и доступного а такого быть не может быть да и числа не те. 

А я ожидал что этот код мне выведет правильные значения, ну или хотя бы очень приближеное.

PM MAIL   Вверх
smoke_man
Дата 9.10.2009, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 5
Всего: 17



Посмотри небольшой пример:
Код

#include <windows.h>
#include <stdio.h>

int main ()
{
    BOOL  fResult;

    char  *pszDrive  = "D:\\";

    unsigned __int64 i64FreeBytesToCaller,
        i64TotalBytes,
        i64FreeBytes; 
    
    fResult = GetDiskFreeSpaceExA (pszDrive,
            (PULARGE_INTEGER)&i64FreeBytesToCaller,
            (PULARGE_INTEGER)&i64TotalBytes,
            (PULARGE_INTEGER)&i64FreeBytes);
        if (fResult)
        {
            printf ("\n\nGetDiskFreeSpaceEx reports\n\n");
            printf ("Available space to caller = %I64u KB\n",
                i64FreeBytesToCaller / 1024);
            printf ("Total space               = %I64u KB\n",
                i64TotalBytes / 1024);
            printf ("Free space on drive       = %I64u KB\n",
                i64FreeBytes / 1024);
        }
    

    if (!fResult)
        printf ("error: %lu:  could not get free space for \"%s\"\n",
        GetLastError(), pszDrive);
    system("PAUSE");

    return EXIT_SUCCESS;
}




--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
rAccOOn
Дата 9.10.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 8.1.2009

Репутация: нет
Всего: нет



спс, помогло. 
PM MAIL   Вверх
GremlinProg
Дата 9.10.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(rAccOOn @  9.10.2009,  15:21 Найти цитируемый пост)
помогло

серьезно?
т.е. проблема заключалась только в передаче в sprintf структуры ULARGE_INTEGER?
тогда ULARGE_INTEGER использовать предпочтительнее, а в sprintf нужно передавать Total.QuadPart

Добавлено через 2 минуты и 4 секунды
хотя щас только сообразил: в килобайтах размер может корректно вписываться в 32 бита, не затрагивая старшее двойное слово


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0694 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.