delorie.com/djgpp/faq/lowlevel/movedata12.html   search  
I call movedata() to pass data between my program and the transfer buffer, but get bogus values or General Protection Fault.

Valid conventional-memory addresses are only 20 bit-wide. However, the value held stored in the variable

  _go32_info_block.linear_address_of_transfer_buffer
is not guaranteed to have the higher 12 bits zeroed, and movedata() doesn't mask those high bits, because it can also be used to move data between 2 protected-memory locations. Be sure to mask off the high 12 bits of the value returned by various ...._linear_address_... fields in go32 structures, before you call any of the above functions.


  webmaster     delorie software   privacy  
  Copyright © 1995     Updated Feb 1995