ES:DI (or ES:EDI) address of 28-byte info structure (see below)
ES:DI (or ES:EDI) structure updated
Info: This allocates a named block of memory that may be shared by DPMI
clients. This may be used for interprocess communication.
DS:(E)DI this selector:offset must point to a 28-byte local structure
+0 4 lReqSize desired size of block, in bytes
+4 4 lActualSize actual size allocated (returned)
+8 4 lHandle handle for the allocation (returned)
+0cH 4 lLinAddr linear addr of allocation (returned)
+10H 6 p48szName 48-bit address of ASCIIZ name for
the shared block. First 4 bytes are
the offset; the last 2 are selector.
+18H 4 lRes2 reserved; must be 0
28 size of this structure
On entry, you must fill in lReqSize and set p48szName to a 48-bit
address of an ASCIIZ string that names the block. The host
fills-in lAllocSize, lHandle, and lLinAddr.
For 16-bit clients, the high word of p48szName must be 0000H.
Note: The second and subsequent client to use this fn with the same
ASCIIZ name, will be returned info about the initial
allocation. For such subsequent "allocations", the lReqSize
field is ignored. Be sure to check the lActualSize field on
The first client to allocate a named block will find that the
first 16-bytes are 0. It can gain exclusive ownership via
subsequent clients can tell that it has been initialized.
0-length allocations are explicitly supported and can be used
All of your shared memory allocations and serializations are
freed by the host automatically when you terminate.