這個主題說明以參照形式來傳回字串或位元組陣列之 C 函數所用的介面。
當 C 應用程式呼叫會以值形式來傳回字串的 C 函數或會以值形式來傳回位元組陣列的 C 函數中所述的一個函數時, XMS 必須將字串或位元組陣列複製到應用程式所提供的緩衝區中。如果應用程式正在處理大量的訊息, 且訊息中的字串或位元組陣列相當大, 則所耗的複製時間可能會影響效能。
在此情況下為了獲得較好的效能, C API 另提供一組函數。當應用程式呼叫這些函數之一時, 會有一個參數傳回儲存在 XMS 所擁有之記憶體中的字串或位元組陣列的指標, 而另一個參數會傳回字串或位元組陣列的長度。舉例來說, xmsBytesMsgReadBytesByRef() 與 xmsGetStringPropertyByRef() 皆屬於這類函數。
如果需要對字串進行資料轉換,XMS 會將字元轉換成應用程式的字碼頁, 並傳回轉換後之字串的指標。傳回給應用程式的長度會是轉換後之字串的長度。
如果需要轉換資料,則應用程式第一次以參照形式擷取字串所花的時間, 可能和以值形式來擷取字串的時間一樣長。不過,XMS 會快取轉換後的字串, 因此後續呼叫用來擷取相同的字串,所需的時間就不會那麼久。
由於這些函數會將指標傳回至 XMS 所擁有的記憶體中, 應用程式不得試著釋放或修改這個記憶體中的內容。如果嘗試如此做,則可能造成無法預期的結果。
除非刪除字串或位元組陣列的相關聯 XMS 物件,否則 傳回給應用程式的指標會一直有效。如果應用程式在物件刪除後仍需要資料,則必須複製字串或位元組陣列。