Başvuru İşaretçileri
Başvuru işaretçileri en basit işaretçilerdir ve istemci saplaması tarafından en az miktarda işleme gerektirir. İstemci programı bir başvuru işaretçisini uzak yordama geçirdiğinde, başvuru işaretçisi her zaman geçerli bir bellek bloğunun adresini içerir. Uzak yordam tamamlandığında yine aynı bellek bloğunu işaret eder. Bu işaretçiler temel olarak başvuru semantiğini uygulamak ve C'de [out] parametrelerine izin vermek için kullanılır.
Aşağıdaki örnekte, işaretçinin değeri çağrı sırasında değişmez, ancak işaretçi tarafından belirtilen adresteki verilerin içeriği değişebilir.
Statik başvuru işaretçisi adresinde değişen verileri
Başvuru işaretçisi aşağıdaki özelliklere sahiptir:
- Her zaman geçerli depolamaya işaret eder ve null değerine sahip olmaz.
- Arama sırasında hiçbir zaman değişmez ve her zaman aramadan önce ve sonra aynı depolama alanına işaret eder.
- Uzak yordamdan döndürülen veriler mevcut depolama alanına yazılır.
- Başvuru işaretçisi tarafından işaret edilen depolamaya işlevdeki başka bir işaretçi veya başka bir ad tarafından erişilemez.
Aşağıdaki örnekte gösterildiği gibi arabirim tanımlarında başvuru işaretçilerini belirtmek için [ref] özniteliğini kullanın.
/* IDL file */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0)
]
interface RefPtrInterface
{
void RemoteFn([in, out, ref] char *pChar);
}
Bu örnek, pChar parametresini bir karakter dizisi değil, tek bir karakter işaretçisi olarak tanımlar. Sunucu yordamı RemoteFn'nin verilerle dolduracağı belleğe işaret eden bir [out] parametresi ve başvuru işaretçisidir.