Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kompilator MIDL generuje maksymalnie trzy funkcje dla każdego typu, do którego jest stosowany atrybut [kodowania] lub [ dekodowania] . Na przykład w przypadku typu zdefiniowanego przez użytkownika o nazwie MyTypekompilator generuje kod dla funkcji MyType_Encode, MyType_Decode i MyType_AlignSize. W przypadku tych funkcji kompilator zapisuje prototypy w pliku Stub.h i kodzie źródłowym w celu Stub_c.c. Ogólnie rzecz biorąc, można kodować obiekt MyType za pomocą MyType_Encode i dekodować obiekt z buforu przy użyciu MyType_Decode. MyType_AlignSize jest używana, jeśli musisz znać rozmiar buforu marshalingu przed jego przydziałem.
Następująca funkcja kodowania jest generowana przez kompilator MIDL. Ta funkcja serializuje dane obiektu wskazywane przez obiekt pObject, a bufor jest uzyskiwany zgodnie z metodą określoną w dojściu. Po zapisaniu serializowanych danych do buforu należy kontrolować bufor. Należy pamiętać, że uchwyt dziedziczy stan z poprzednich wywołań, a muszą być wyrównane do 8.
W przypadku niejawnego uchwytu:
void MyType_Encode (MyType __RPC_FAR * pObject);
W przypadku jawnego uchwytu:
void MyType_Encode (handle_t Handle, MyType __RPC_FAR * pObject);
Poniższa funkcja deserializuje dane z magazynu aplikacji do obiektu wskazywanego przez obiekt pObject. Należy podać marshalowany bufor zgodnie z metodą określoną w dojściu. Należy pamiętać, że dojście może dziedziczyć stan z poprzednich wywołań, a muszą być wyrównane do 8.
W przypadku niejawnego uchwytu:
void MyType_Decode (MyType __RPC_FAR * pObject);
W przypadku jawnego uchwytu:
void MyType_Decode (handle_t Handle, MyType __RPC_FAR * pObject);
Poniższa funkcja zwraca rozmiar w bajtach, który zawiera wystąpienie typu oraz wszystkie bajty wypełnienia potrzebne do wyrównania danych. Umożliwia to serializowanie zestawu wystąpień tego samego lub różnych typów w buforze przy jednoczesnym zapewnieniu, że dane dla każdego obiektu są odpowiednio wyrównane. MyType_AlignSize zakłada, że wystąpienie wskazywane przez obiekt pObject zostanie przełożone do buforu rozpoczynającego się od przesunięcia wyrównanego do wartości 8.
W przypadku niejawnego uchwytu:
size_t MyType_AlignSize (MyType __RPC_FAR * pObject);
W przypadku jawnego uchwytu:
size_t MyType_AlignSize (handle_t Handle, MyType __RPC_FAR * pObject);
Należy pamiętać, że obie procedury zdalne z niejawnymi uchwytami powiązań i serializacji typów z niejawnymi uchwytami serializacji używają tej samej zmiennej obsługi globalnej. Dlatego zaleca się, aby nie mieszać serializacji typów i procedur zdalnych w interfejsie z niejawnymi uchwytami. Aby uzyskać szczegółowe informacje, zobacz Niejawne i jawne dojścia.