GetRealModeWorkSpace

Used in conjunction with DoRealModeInterrupt In ODI Specification: Protocol Stacks and MLIDs (Intel 32-Bit Assembly Language) to allow the HAM access to memory in real mode.

Thread Context:Non-Blocking

Syntax

    void GetRealModeWorkSpace (
       LONG  *workSpaceSemaphore,
       LONG  *protectedModeAddress,
       WORD  *realModeSegment,
       WORD  *realModeOffset,
       LONG  *workSpaceSize
       );
    
    

Parameters

workSpaceSemaphore
(IN/OUT) Address of a local variable of type LONG. Receives a handle to the OS semaphore structure.
protectedModeAddress
(IN/OUT) Address of a local variable of type LONG. Receives a 32-bit logical address of the workspace block from the OS.
realModeSegment
(IN/OUT) Address of a local variable of type WORD. Receives the real mode segment of the workspace from the OS.
realModeOffset
(IN/OUT) Address of a local variable of type WORD. Receives the real mode offset into the workspace segment from the OS.
workSpaceSize
(IN/OUT) Address of a local variable of type LONG. Receives the size of the workspace in bytes from the OS.

Remarks

GetRealModeWorkSpace is used to provide a HAM with a real mode workspace. Used in conjunction with DoRealModeInterrupt, the HAM has access to memory in real mode. Be aware that the HAM must provide the storage locations for the outputs it receives during this call. This call cannot be used to lock two or more workspaces at a time.

Because NetWare runs in protected mode, it does not allow direct access to BIOS information. DoRealModeInterrupt allows the HAM to access the BIOS and get data from it. DoRealModeInterrupt turns on the system interrupts and executes in a critical section; therefore, calls to CPSemaphore and CVSemaphore are necessary to keep other processes out of the workspace.