Aracılığıyla paylaş


Parametre Tanımlayıcıları

Daha önce belirtildiği gibi –Oi ve –Oif stili parametre tanımlayıcıları vardır.

–Oi Parametre Tanımlayıcıları

Tam olarak yorumlanan saptamalar, RPC çağrısındaki parametrelerin her biri için ek bilgi gerektirir. Yordamın parametre açıklamaları, yordamın açıklamasından hemen sonra gelir.

Simple –Oi

Parametre Tanımlayıcıları

[]açıklamasının veya dönüş basit tür parametresinin biçimi:

FC_IN_PARAM_BASETYPE 
simple_type<1>

–veya–

FC_RETURN_PARAM_BASETYPE 
simple_type<1>

burada simple_type<1> basit türü gösteren FC belirtecidir. Kodlar aşağıdaki gibidir:

4e  FC_IN_PARAM_BASETYPE 
53  FC_RETURN_PARAM_BASETYPE

Diğer –Oi

Parametre Tanımlayıcıları

Diğer tüm parametre türleri için açıklama biçimi şu şekildedir:

param_direction<1> 
stack_size<1> 
type_offset<2>

Burada, bu açıklamaların her biri için param_direction<1> alanı aşağıdaki tabloda gösterilenlerden biri olmalıdır.

Büyü Bayrak Anlam
4d FC_IN_PARAM In parametresi.
50 FC_IN_OUT_PARAM Bir giriş/çıkış parametresi.
51 FC_OUT_PARAM Out parametresi.
52 FC_RETURN_PARAM Yordam dönüş değeri.
4f FC_IN_PARAM_NO_FREE_INST Serbest bırakma yapılmayan bir parametre olarak xmit/rep içinde.

 

stack_size<1>, parametrenin yığında kapsayılan tamsayı sayısı olarak ifade edilen yığındaki parametresinin boyutudur.

Not

–Oi modu 64 bit platformlarda desteklenmez.

 

type_offset<2> alanı, tür biçimi dize tablosundaki uzaklıktır ve bağımsız değişkenin tür tanımlayıcısını gösterir.

–Oif Parametre Tanımlayıcıları

Parametre açıklaması için biri temel türler, diğeri diğer tüm türler için olmak üzere iki olası biçim vardır.

Temel türler:

PARAM_ATTRIBUTES<2> 
stack_offset<2> 
type_format_char<1> 
unused<1>

Diğer:

PARAM_ATTRIBUTES<2> 
stack_offset<2> 
type_offset<2>

Her iki stack_offset<2> de sanal bağımsız değişken yığınındaki uzaklığı bayt cinsinden gösterir. Temel türler için, bağımsız değişken türü doğrudan türe karşılık gelen biçim karakteri tarafından verilir. Diğer türler için type_offset<2> alanı, bağımsız değişkenin tür tanımlayıcısının bulunduğu tür biçimi dize tablosundaki uzaklığı verir.

Parametre özniteliği alanı aşağıdaki gibi tanımlanır:

typedef struct
  {
  unsigned short  MustSize            : 1;    // 0x0001
  unsigned short  MustFree            : 1;    // 0x0002
  unsigned short  IsPipe              : 1;    // 0x0004
  unsigned short  IsIn                : 1;    // 0x0008
  unsigned short  IsOut               : 1;    // 0x0010
  unsigned short  IsReturn            : 1;    // 0x0020
  unsigned short  IsBasetype          : 1;    // 0x0040
  unsigned short  IsByValue           : 1;    // 0x0080
  unsigned short  IsSimpleRef         : 1;    // 0x0100
  unsigned short  IsDontCallFreeInst  : 1;    // 0x0200
  unsigned short  SaveForAsyncFinish  : 1;    // 0x0400
  unsigned short  Unused              : 2;
  unsigned short  ServerAllocSize     : 3;    // 0xe000
  } PARAM_ATTRIBUTES, *PPARAM_ATTRIBUTES;
  • MustSize biti yalnızca parametrenin boyutlandırılması gerekiyorsa ayarlanır.
  • Sunucunun parametresinin NdrFree* yordamını çağırması gerekiyorsa MustFree biti ayarlanır.
  • IsSimpleRef biti, başka bir işaretçi dışında herhangi bir öğeye başvuru işaretçisi olan ve ayırma özniteliği olmayan bir parametre için ayarlanır. Böyle bir tür için, parametre açıklamasının temel türe yönelik başvuru işaretçisi dışında type_offset<> alanı, başvuranın türüne uzaklığı sağlar; başvuru işaretçisi atlanır.
  • IsDontCallFreeInst biti, ücretsiz örnek yordamları çağrılmaması gereken belirli represent_as parametreleri için ayarlanır.
  • parametresi [], [] veya [in,out] işaretçisi veya enum16 işaretçisi ise ServerAllocSize bitleri sıfır değildir ve I_RpcAllocateçağrısı kullanmak yerine sunucu yorumlayıcısının yığınında başlatılır. Sıfır değilse, parametrenin bayt sayısını almak için bu değer 8 ile çarpılır. Bunun, işaretçi için her zaman en az 8 bayt ayrıldığı anlamına geldiğini unutmayın.
  • IsBasetype biti, ana –Oif yorumlayıcı döngüsü tarafından sıralanan basit türler için ayarlanır. Özellikle, bir FC_RANGE belirteci kullanarak dağıtım aracılığıyla aralık yordamını hazırlamayı zorlamak için üzerinde range özniteliği olan basit bir tür temel tür olarak işaretlenmez.
  • IsByValue biti, değer tarafından gönderilen bileşik türler için ayarlanır, ancak bağımsız değişkenin işaretçi olup olmadığına bakılmaksızın basit türler için ayarlanmaz. Ayarlandığı bileşik türler yapılar, birleşimler, transmit_as, represent_as, wire_marshal ve SAFEARRAY'dir. Genel olarak bit, –Oicf yorumlayıcıdaki ana yorumlayıcı döngüsünün avantajına yönelik olarak kullanıma sunulmuştur ve bu sayede nonsimple bağımsız değişkenlerin (bileşik tür bağımsız değişkenleri olarak adlandırılır) düzgün başvurulmadığından emin olun. Bu bit, yorumlayıcının önceki sürümlerinde hiç kullanılmamıştı.