Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Builder 2007 + Vista x64 + WinAPI -> запуск в XP, некорректная работа некоторых функций 
:(
    Опции темы
TyShkan
Дата 22.4.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите, пожалуйста, как быть:

Vista x64
CodeGear C++ Builder v.11.0.2709.7128

Проекты, использующие WinAPI, компилируются под вистой. При запуске под XP информация, получаемая посредством winapi-функций либо нулевая, либо выдает ошибки.

К примеру такой кусок кода:
Код

    char buf[9];
    DWORD procId;
    HANDLE procPsHandle;
    HANDLE dupHandle;
    HANDLE procDsCpy;

    Memo2->Clear();

    Memo2->Lines->Add("Информация о текущем процессе\r\n");

    procId = GetCurrentProcessId();

    sprintf(buf, "0x%08X", procId);
    Memo2->Lines->Add("Идентификатор:");
    Memo2->Lines->Add("\t" + AnsiString(buf));

    procPsHandle = GetCurrentProcess();
    sprintf(buf, "0x%p", procPsHandle);
    Memo2->Lines->Add("Псевдодескриптор:");
    Memo2->Lines->Add("\t" + AnsiString(buf));

    DuplicateHandle(procPsHandle, procPsHandle, procPsHandle, &dupHandle, 0, false, DUPLICATE_SAME_ACCESS);
    sprintf(buf, "0x%p", dupHandle);
    Memo2->Lines->Add("Дескриптор:");
    Memo2->Lines->Add("\t" + AnsiString(buf));

    procDsCpy = OpenProcess(PROCESS_ALL_ACCESS, false, procId);
    sprintf(buf, "0x%p", procDsCpy);
    Memo2->Lines->Add("Копия дескриптора:");
    Memo2->Lines->Add("\t" + AnsiString(buf));

    if (!CloseHandle(dupHandle)) {
        Memo2->Lines->Add("Не удалось закрыть дескриптор: " + SysErrorMessage(GetLastError()));
    }

    if (!CloseHandle(procDsCpy)) {
        Memo2->Lines->Add("Не удалось закрыть копию дескриптора: " + SysErrorMessage(GetLastError()));
    }


Выдает:
Цитата

Информация о текущем процессе

Идентификатор:
    0x00000FF8
Псевдодескриптор:
    0xFFFFFFFF
Дескриптор:
    0x00000080
Копия дескриптора:
    0x00000000
Не удалось закрыть копию дескриптора: Неверный дескриптор


Методом тыка удалось определить, что если поставить галку в оптионсах: C++ Compiler -> Paths and Defines -> Windows Version Target -> WinXP и C++ Compiler -> Precompiled headers -> Cache precompiled headers, то программки начинают местами работать корректно.

Кто-нибудь знает решение как оптимизировать настройки проекта и код для работы программы и под Вистой и под XP?

Это сообщение отредактировал(а) TyShkan - 22.4.2008, 15:02
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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