add directory study
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
|
||||
|
||||
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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user