共用方式為


完整指標

不同於 唯一 指標,完整指標支援別名。 這表示多個指標可以參考相同的數據,如下圖所示:

兩個參考相同數據的指標

完整指標具有下列特性:

  • 它可以有 null 值。
  • 它可以在呼叫期間從 Null 變更為非 Null。 當值變更為非 Null 時,用戶端存根會配置傳回時配置的新記憶體。 用戶端程式應該在終止之前釋放此記憶體。
  • 它可以在呼叫期間從非 Null 變更為 Null。 當值變更為 null 時,應用程式會負責釋放記憶體。
  • 值可以從一個非 Null 值變更為另一個值。
  • 完整指標指向的記憶體,可由作業中的另一個指標或名稱存取。
  • 如果指標沒有 null 值,則傳回數據會寫入現有的記憶體。

使用 [ ptr ] 屬性來指定完整指標,如下列範例所示:

/* IDL file */
[ 
  uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
  version(1.0)
]
interface FullPtrInterface
{
  void RemoteFn([in,ptr,string]) char *ptrName1,
                [in,ptr,string]  char *ptrName2);
}

在此範例中,ptrName1ptrName2 的參數會定義為字串的完整指標。 這兩個指標都可能指向包含單一字串的相同記憶體位址。

提供別名支援時,需要 [ptr]。 不過,由於它需要 RPC 中所有可用指標的最多處理,因此不建議大多數應用程式使用。