[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 ExoProtectedPtr()
 Creates a protected mode pointer from a real mode pointer
------------------------------------------------------------------------------
 C Prototype

     void *ExoProtectedPtr(void *rm_ptr, unsigned int size)

 Returns

     This function returns the protected mode pointer (pm_ptr), or NULL if
     the pointer cannot be allocated.  A new descriptor is allocated.

 Description

     The protected mode data pointer created by this function points to a
     segment of size bytes.  Since a value of 64KB is too large for an
     unsigned variable, use 0 to specify 64KB for size.  The offset of pm_ptr
     is always 0.  The base physical address of pm_ptr's segment is the
     absolute address of rm_ptr, which is segment(rm_ptr) * 16 +
     offset(rm_ptr).  Because ExoProtectedPtr() is run with interrupts
     enabled, realtime applications should not call it from an external
     interrupt handler.

     The offset of the pointer returned by ExoProtectedPtr() will ALWAYS be
     0.

     ExoFreeSelector() must be called to free the selector allocated with
     ExoProtectedPtr().  Selectors are a limited resource and repeated calls
     to ExoProtectedPtr() as well as ExoSegCSAlias() and ExoSegDSAlias()
     could use up all the available selectors causing the program to crash.
     Once you are done with a pointer created with ExoProtectedPtr(), free
     the selector unless you will be using the pointer throughout the
     program..

 Examples

     See example for ExoFreeSelector().

 Files   Library is EXOSPACE.LIB, header file is Exospace.api.


See Also: ExoRealPtr() ExoFreeSelector()
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson