RtlAllocateHeap
- From
- Alexey Nevolin (2:5030/1272.64)
- To
- Alex Fedotov
- Date
- 2001-03-14T00:39:06Z
- Area
- SU.WINDOWS.NT.PROG
*** Ответ на письмо из арии CC.FOR.ME (CC.FOR.ME).
■ Hi there, Alex !
■ Сдаунлоадив Holodisk в свой Pip-Boy 2000 я обнаружил, что в 13 Mar 01 08:13, Alex Fedotov писал Alexey Nevolin:
>> AF> Что такое Base вроде тоже понятно. Это базовый адрес
>> AF> создаваемой кучи.
>> А от чего этот адрес считается? (это-же не физический адрес)
AF> Это адрес в адресном пространстве процесса, который вызывает
AF> RtlCreateHeap. VirtualAlloc помнишь? Там такой же параметр есть.
А! Понял =)
>> AF> memset( &heapParams, 0, sizeof( RTL_HEAP_DEFINITION ));
>> AF> heapParams.Length = sizeof( RTL_HEAP_DEFINITION );
>> AF> Heap = RtlCreateHeap( 2, 0, 0x100000, 0x1000, 0,
>> AF> &heapParams );
>> Вот и пойми, к чему там те параметры? Слушай, может у тебя какие
>> сырцы есть?
AF> Единственные сырцы, которые я видел, я нашел вчера на
AF> www.sysintenals.com. С другой стороны, я не совсем понимаю твою
AF> проблему. Если тебе надо просто создать кучу, вызывай ее так, как это
AF> делает HeapCreate или как показано у Руссиновича. А если надо не
AF> просто вызвать, то что надо?
У Руссиновича я тоже смотрел. Нашел этот исходник. Кучу я создал, все хорошо. Просто теперь детство в попе заиграло разобраться =). А по поводу Locks - это изначальное количество оных на данный кусок памяти. Вспомни кусок кода из kernel32.dll, который я кидал сюда. Так вот: смотрим документацию по GlobalLock:
─── Тут начинается файл Windows Clipboard ───
The internal data structures for each memory object include a lock count that is initially zero. For movable memory objects, GlobalLock increments the count by one, and the GlobalUnlock function decrements the count by one. For each call that a process makes to GlobalLock for an object, it must eventually call GlobalUnlock. Locked memory will not be moved or discarded, unless the memory object is reallocated by using the GlobalReAlloc function. The memory block of a locked memory object remains locked until its lock count is decremented to zero, at which time it can be moved or discarded.
─── А здесь Windows Clipboard кончается ───
Собственно видимо это и есть то, о чем говорится выше. Почему у Руссиновича там PVOID а не ULONG, я не в курсе =( А изначальное значение Lock'ов в вызове устанавливается в 0.
2ВСЕ - у кого есть книжка - помогайте!
■ cul8r Alex
■ wbr Alexey Nevolin.
[Tuborg][ESP][Drums][WinNT][Sun Solaris][OS/2][Quake3][Scorpions][Metallica]
[FML366][Iron Maiden][RU.METALLICA]
... lurking in a dismal fog, hungry for your blood...
--- GoldEd 3.00a5/[w32] // Welcome to RU.METALLICA
* Origin: Page Fault Station (2:5030/1272.64)