Re: RtlAllocateHeap

From
Alex Fedotov ()
To
Alexey Nevolin
Date
2001-03-12T06:44:20Z
Area
SU.WINDOWS.NT.PROG
From: "Alex Fedotov" <alexf@3cube.com>

Alexey Nevolin wrote:

> NTSYSAPI
> HANDLE
> NTAPI
> RtlCreateHeap (
>     IN ULONG   Flags,
>     IN PVOID   Base,
>     IN ULONG   Reserve,
>     IN ULONG   Commit,
>     IN ULONG   Lock,
>     IN PVOID   RtlHeapParams);
>
> Что такое Flags, Reserve, Commit - понятно (флаги, сколько максимально,
> сколько надо). А остальное??? В kernel32.dll это все выглядит так:
> [...]
> Т.е. оно опускает (заранее нули) все остальные параметры. А что это за
> параметры?

Что такое Base вроде тоже понятно. Это базовый адрес создаваемой кучи.

Поиск в Internet на эту тему дал единственный полезный результат на
http://www.sysinternals.com/ntw2k/info/native.shtml. Там у Руссиновича
несколько другой прототип функции (ты свой, кстати, откуда взял?):

//
// Data structure for heap definition. This includes various
// sizing parameters and callback routines, which, if left NULL,
// result in default behavior
//
typedef struct {
 ULONG     Length;
 ULONG     Unknown[11];
} RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;

//
// Heap creation routine
//
HANDLE
NTAPI
RtlCreateHeap(
       ULONG Flags,
       PVOID BaseAddress,
       ULONG SizeToReserve,
       ULONG SizeToCommit,
       PVOID Unknown,
       PRTL_HEAP_DEFINITION Definition
       );

А вызывается она у него так:

    //
    // Initialize some heap
    //
    memset( &heapParams, 0, sizeof( RTL_HEAP_DEFINITION ));
    heapParams.Length = sizeof( RTL_HEAP_DEFINITION );
    Heap = RtlCreateHeap( 2, 0, 0x100000, 0x1000, 0, &heapParams );

--
Alex Fedotov


--- ifmail v.2.15dev5
 * Origin: 3Cube, Inc. (www.3cube.com) (2:5020/400)