· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› SHBrowseForFolder

Посл.отвђт Сообщенiе


Дата: Сен 27, 2004 12:43:09

При работе с SHBrowseForFolder как освобождать отведенную память?
В SDK сказано что это необходимо:
"The calling application is responsible for freeing the returned item identifier list using the shell's task allocator."
Но вариант GlobalHandle, GlobalUnlock и GlobalFree не работает :(


Дата: Сен 27, 2004 15:46:30

Вот, что написано в MSDN:
The calling application is responsible for freeing the returned PIDL with the Shell allocator's IMalloc::Free method. To retrieve a handle to the Shell allocator's IMalloc interface, call SHGetMalloc.
А вот и пример как это использовать.


1664499701__txt.Asm


Дата: Сен 27, 2004 17:22:06

Julius, cпасибо за ответ.
Уже сам закопался в MSDNe.
Шаги простые:
1. SHGetMalloc(&g_pMalloc), где LPMALLOC g_pMalloc;
2. SHGetDesktopFolder(&pFolder), где LPSHELLFOLDER pFolder
3. Если 1 и 2 ОК, тогда g_pMalloc->Free(pFolder)

Но как работать в асме с interface (LPMALLOC)?
В 1664499701__txt.Asm это показано, но хотелось бы почитать инфу поподробнее ...
В связи с этим более общий вопрос:
Где можно почитать об interface в асме?


Дата: Сен 28, 2004 13:14:16

http://www.wasm.ru/publist.php?list=15
В принципе этого достаточно, в качестве общей теории.
Описание самого интерфейса iMalloc есть в MSDN'e.
Там же и назначение всех параметров для всех методов.
Отличие от C++ состоит только в том, что при вызове каждого метода необходимо передавать указатель this на экземпляр интерфейса с которым ты работаешь, С++ это делает самостоятельно.
По сути интерфейс iMalloc - это переходник для работы с кучей.


Дата: Сен 30, 2004 06:56:50

In attachment you can find an include that I use to implement Folder Browsing. Honestly speaking it was written based on code from masm32:BrowseForFolder and changed slightly to make it work on its own.

1611859806__BrowseForFolder.Inc


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.091