dos12.hlp (Table of Contents; Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
DosCallback (1.2)
                                                      Up Next Previous
────────────────────────────────────────────────────────────────────────────
 
#define INCL_DOSDEVICES
 
VOID DosCallback(pfn)
PFN pfn;    /* pointer to ring-3 function */
 
The DosCallback function allows a process with ring-2 input/output privilege
to call a ring-3 function.
 
Parameter  Description
────────────────────────────────────────────────────────────────────────────
 
pfn        Points to the ring-3 function to be called.
 
Return Value
 
This function does not return a value.
 
Comments
 
When a process with ring-2 input/output privileges uses the DosCallback
function to call a ring-3 function, the target function executes at ring 3
and returns to the ring-2 calling process. The ring-3 function need not
conform to the ring-2 privilege level. The ring-3 function that is called by
the DosCallback function may call a ring-2 segment before it returns.
 
All registers except FLAGS will be passed intact across this call/return
sequence and may be used to pass parameters or data back and forth between
rings 2 and 3. Any addresses passed from ring 2 to ring 3 must be based on
ring-3 selectors, because ring-3 code cannot address ring-2 data selectors.
 
A ring-2 stack cannot be used to pass data to a ring-3 function.
 
The following Dos functions are valid when issued from ring 2:
 
    DosAllocHuge          DosGetHugeShift           DosReadAsync
    DosAllocSeg           DosGetInfoSeg             DosReallocHuge
    DosAllocShrSeg        DosGetMachineMode         DosReallocSeg
    DosBeep               DosGetModHandle           DosResumeThread
    DosBufReset           DosGetModName             DosRmDir
    DosCallback           DosGetPID                 DosScanEnv
    DosChDir              DosGetPPID                DosSearchPath
    DosChgFilePtr         DosGetProcAddr            DosSelectDisk
    DosCliAccess          DosGetPrty                DosSemClear
    DosClose              DosGetResource            DosSemRequest
    DosCloseSem           DosGetSeg                 DosSemSet
    DosCreateCSAlias      DosGetShrSeg              DosSemSetWait
    DosCreateSem          DosGetVersion             DosSemWait
    DosCreateThread       DosGiveSeg                DosSendSignal
    DosCwait              DosHoldSignal             DosSetCp
    DosDelete             DosKillProcess            DosSetDateTime
    DosDevConfig          DosLoadModule             DosSetFHandState
    DosDevIOCtl           DosLockSeg                DosSetFileInfo
    DosDupHandle          DosMakePipe               DosSetFileMode
    DosEnterCritSec       DosMemAvail               DosSetFSInfo
    DosErrClass           DosMkDir                  DosSetMaxFH
    DosError              DosMove                   DosSetPrty
    DosExecPgm            DosMuxSemWait             DosSetSigHandler
    DosExit               DosNewSize                DosSetVec
    DosExitCritSec        DosOpen                   DosSetVerify
    DosExitList           DosOpenSem                DosSizeSeg
    DosFileLocks          DosPhysicalDisk           DosSleep
    DosFindClose          DosPortAccess             DosSubAlloc
    DosFindFirst          DosQAppType               DosSubFree
    DosFindNext           DosQCurDir                DosSubSet
    DosFlagProcess        DosQCurDisk               DosSuspendThread
    DosFreeModule         DosQFHandState            DosTimerAsync
    DosFreeSeg            DosQFileInfo              DosTimerStart
    DosFSRamSemClear      DosQFileMode              DosTimerStop
    DosFSRamSemRequest    DosQFSInfo                DosUnlockSeg
    DosGetCp              DosQHandType              DosWrite
    DosGetDateTime        DosQVerify                DosWriteAsync
    DosGetEnv             DosRead
 
                                      ♦