include shell.inc
VxDcall SHELL_LocalAllocEx, <fl, cb, <OFFSET32 lpvBuf>>
mov [Handle], eax
mov [LinearAddress], edx
Allocates memory from the local heap of the message server application. Uses C calling conventions.
LMEM_ZEROINIT | Fill block with zeroes. |
LMEM_FIXED | Allocate non-moveable memory. |
LPTR | Same as LMEM_ZEROINIT and LMEM_FIXED. |
LMEM_STRING | Allocate a block having the same size in bytes as a null-terminated string. The cb parameter must be zero and lpvBuf must be the address of the null-terminated string. |
Do not use LMEM_MOVEABLE or LMEM_DISCARDABLE.
This service may be called only during application time. Failure to observe this restriction may crash the system.
The message server application runs without a window on the Windows desktop. VxDs should be frugal with the use of this memory since it is a limited resource. Because Windows moves segments, the 32-bit linear address returned in EDX becomes invalid as soon as control is given to the Windows memory manager. The 16:16 pointer remains valid however.