h6. [[WindowManager]] h6(. » [[WindowManager Messages|Messages]] h6((. » [[Message Codes|Message Codes]] h6(((. » Message_RAMFetch h2. Message_RAMFetch h5. (Code &6) |_\2<^. Message Block | |>^. +20|<^. Pointer to buffer where receiver should put data| |>^. +24|<^. Size of buffer| h4. Use Tasks should send this message either in response to a [[Message_DataSave]] message, indicating that you want to use memory transfer, or in response to a [[Message_RAMTransmit]] message, to request more data. h4. Notes This message should always be sent as a [[User_Message_Recorded]], so that if it is unanswered the task can either revert to the file transfer protocol, or abort the data transfer. Before sending this message, it is important to allocate a buffer for the data-saving task to write data to. You can use the estimated data size from the [[Message_DataSave]] message, but you should be prepared for more (or less) data to actually be sent. If you receive a Message_RAMTransmit message where the data-saving task has filled the buffer (data transferred-buffer size), then you should reply with this message. If you receive a Message_RAMTransmit where the data-saving task has not filled your buffer, then this marks the successful conclusions of the transfer. If you cannot process the received data, you should report an error and abandon the transfer. Possible responses from the data-saving tasks: * It sends Message_RAMTransmit (data successfully written to specified buffer) * It does not reply (memory transfer not supported/error writing data) If this message returns unanswered: * If no reply is received to the first RAMFetch, file transfer should be used instead (send a [[Message_DataSaveAck]]). * If there is no reply to subsequent messages, then the transfer should be abandoned silently (the other end will already have reported an error) h4. See also * [[Message Codes]] * [[Message_DataSave]] * [[Message_DataSaveAck]] * [[Message_RAMTransmit]] * [[User_Message_Recorded]] * [[Wimp_Poll]] * [[Wimp_SendMessage]]