串流訊息的主體含有一個值串流,其中每一個值都有一個相關聯的資料類型。
值的資料類型會是表 1 中所列的其中一種 XMS 資料類型。
在應用程式建立串流訊息後, 訊息的主體會是唯寫的。應用程式會呼叫 StreamMessage 類別(若為 C 或 C++)或 IStreamMessage 介面(若為 .NET)的適當寫入方法, 以便將應用程式資料組合到主體中。每當應用程式將值寫入訊息串流中時, 會立即將值與其資料類型組合到應用程式所寫之前一個值的後面。XMS 會維護一個內部游標, 以記住所組合之最後一值的位置。
當應用程式傳送訊息時,訊息的主體即變成唯讀的。在此模式下, 應用程式可傳送訊息多次。
當應用程式接收串流訊息時, 訊息的主體是唯讀的。應用程式可使用 StreamMessage 類別(若為 C 或 C++)或 IStreamMessage 介面 (若為 .NET)的適當讀取方法, 來讀取訊息串流中的內容。應用程式會依序讀取值,而 XMS 會維護一個內部游標, 以記住所讀取之最後一值的位置。
以下情況僅適用於 C: 應用程式可呼叫一個其 value 參數(或 buffer 參數,如果應用程式是呼叫 xmsStreamMsgReadBytes() 或 xmsStreamMsgReadObject() 的話)為一個空值指標的讀取函數, 以略過值而不讀取。如需如何略過為字串之值的相關資訊, 請參閱xmsStreamMsgReadString – 讀取字串。
當應用程式從訊息串流中讀取值時,該值可由 XMS 轉換成另一種資料類型。例如,若要讀取訊息串流中的整數, 應用程式可呼叫「讀取字串」方法,而這會以字串形式來傳回整數。支援的轉換和 XMS 在將內容值從某種資料類型轉換成另一種時所支援的相同。如需所支援的轉換的相關資訊, 請參閱將內容值從某種資料類型隱含轉換成另一種。
在應用程式試著讀取訊息串流中的值時如果發生錯誤, 則游標並不會前進。應用程式可試著以另一種資料類型來讀取該值, 以便從錯誤中回復。
當串流訊息的主體為唯寫時, 如果應用程式呼叫 StreamMessage 類別(若為 C 或 C++)或 IStreamMessage 介面(若為 .NET)的「重設」方法時, 主體會變成唯讀。方法也會將游標重新定位在訊息串流的開頭。
當串流訊息的主體為唯讀時, 如果應用程式呼叫 Message 類別(若為 C 或 C++)或 IMessage 介面(若為 .NET)的「清除主體」方法時, 主體會變成唯寫。此方法亦會清除主體。