80 lines
3.2 KiB
HTML
80 lines
3.2 KiB
HTML
|
|
|
|
The following table shows the DPMI client's restrictions on usage of
|
|
previously allocated descriptors as input parameters to DPMI
|
|
functions. The columns represent the ways the DPMI host allocates
|
|
descriptors for its clients. (The first two columns represent LDT
|
|
descriptor management functions which allocate descriptors, the third
|
|
column represents DOS memory functions, and the last column represents
|
|
"other" descriptors, i.e., unallocated descriptors or descriptors used
|
|
by the DPMI host for internal purposes.) Each row represents a set of
|
|
functions where a client passes those previously allocated
|
|
descriptor(s) to the host as input parameters. A `N' indicates that
|
|
an "Invalid Selector" error will be generated if the given descriptor
|
|
is used in the specified function.<p>
|
|
|
|
Note that a `Y' for a given entry does not indicate that the function
|
|
will succeed, only that it will not generate an "Invalid Selector"
|
|
error. Similarly, an `N' does not necessarily indicate a descriptor
|
|
is invalid for referencing memory, only that it cannot be used with
|
|
that particular function. This chart does not address the usage of
|
|
descriptors in pointers. <p>
|
|
|
|
For example, descriptors allocated by the Allocate LDT Descriptor function
|
|
may be used in any of the interrogation and modification functions of
|
|
LDT Descriptor Management, as well as the functions which set
|
|
exception handlers and interrupt vectors. They may not be passed to
|
|
Allocate Specific LDT Descriptor or the DOS Memory Block Functions.<p>
|
|
|
|
<table border=1 cellspacing=0 cellpadding=4>
|
|
|
|
<tr> <td> </td> <th colspan=4>Descriptor Allocators</th></tr>
|
|
|
|
<tr> <th>Functions referring to allocated descriptors</th>
|
|
|
|
<td>Allocate LDT Descriptor, Allocate Specfic LDT Descriptor, Create Alias descriptr, Initial CS, DS, SS</td>
|
|
|
|
<td>Segment to Descriptor, PSP, Environment Pointer, Callback DS, Locked Stack SS</td>
|
|
|
|
<td>Allocate/Resize DOS Memory Block</td>
|
|
|
|
<td> GDT-based Descriptor, System Descriptor, Unallocated Descriptor</td></tr>
|
|
|
|
<tr><td>Interrogation Functions: Get Segment Base Address, Get Descriptor, Get Multiple Descriptor, Create Segment Alias</td>
|
|
|
|
<td align=center>Y</td> <td align=center>Y</td> <td align=center>Y</td> <td align=center>N</td></tr>
|
|
|
|
<tr><td> Modification Functions: Set Segment Base Address, Set Segment Limit, Set Descriptor Access Rights, Set Descriptor, Set Multiple Descriptors, Free LDT Descriptor</td>
|
|
|
|
<td align=center>Y</td> <td align=center>N</td> <td align=center>N</td> <td align=center>N</td></tr>
|
|
|
|
<tr><td> Allocate Specific LDT Descriptor</td>
|
|
|
|
<td align=center>N</td> <td align=center>N</td> <td align=center>N</td> <td align=center>Y(1)</td></tr>
|
|
|
|
<tr><td>Free/Resize DOS Memory Block</td>
|
|
|
|
<td align=center>N</td> <td align=center>N</td> <td align=center>Y</td> <td align=center>N</td></tr>
|
|
|
|
<tr><td>Set Exception Handler/Interrupt Vector</td>
|
|
|
|
<td align=center>Y</td> <td align=center>Y(3)</td> <td align=center>Y</td> <td align=center>Y(2)</td></tr>
|
|
|
|
</table><p>
|
|
|
|
Notes:
|
|
|
|
<ol>
|
|
|
|
<li> Unallocated descriptors within the range of the LDT only.
|
|
|
|
<li> GDT-Based segment descriptors only.
|
|
|
|
<li> Although this call will succeed, a fault will result if the
|
|
exception or interrupt occurs, since the segment can never be made
|
|
executable.
|
|
|
|
</ul>
|
|
|
|
|