ExtMemMoveStruct struc
Length dd ? ; 32-bit number of bytes to transfer
SourceHandle dw ? ; Handle of source block
SourceOffset dd ? ; 32-bit offset into source
DestHandle dw ? ; Handle of destination block
DestOffset dd ? ; 32-bit offset into destination block
ExtMemMoveStruct ends
NOTE: If SourceHandle is set to 0000h, the SourceOffset is interpreted
as a standard segment:offset pair which refers to memory that is
directly accessible by the processor. The segment:offset pair
is stored in Intel DWORD notation. The same is true for DestHandle
and DestOffset.
Now, here's the problem. To test the whole thing I tried to copy the screen segment (0B800h) to XMS and then get it back to the segment.
These are the values I tried to put into SourceOffset:
0B8000000h (Looks like the most correct one)
0000B800h (You do this when you call the XMS driver)
000FD000h (20-bit intel thing)
None of them however work!
Please, I need help here
It looks like you're new here. If you want to get involved, click one of these buttons!
Comments
It's a true linear address. Thus, the start of segment
B800h, or B8000:0 would be entered as: B8000h
If you want some more info/source on XMS in C, there are some
libs under the C++ section of my page.
Matthew Gross
Acheron@Hotmail.com
http:;//acheronx.resnet.tamu.edu