다음을 통해 공유


type_UserUnmarshal 함수

<type>_UserUnmarshal 함수는 [wire_marshal] 및 [user_marshal] 특성에 대한 도우미 함수입니다. 스텁은 이 함수를 호출하여 클라이언트 또는 서버 쪽에서 데이터를 숨기지 않습니다. 함수는 다음과 같이 정의됩니다.

unsigned char __RPC_FAR * __RPC_USER  <type>_UserUnmarshal(
    unsigned long __RPC_FAR * pFlags,
    unsigned char __RPC_FAR * pBuffer,
    <type>  __RPC_FAR *       pMyObj);

함수 이름의 형식>은 <[wire_marshal] 또는 [user_marshal] 형식 정의에 지정된 userm-type을 의미합니다. 이 형식은 MIDL 컴파일러에 알 수 없는 [user_marshal] 특성과 함께 사용될 때 전송할 수 없거나 짝수일 수 있습니다. 와이어 형식 이름(변환 가능한 형식의 이름)은 함수 프로토타입에서 사용되지 않습니다. 그러나 유선 형식은 OSF DCE에서 지정한 데이터에 대한 와이어 레이아웃을 정의합니다.

pFlags 매개 변수는 서명되지 않은 긴 플래그 필드에 대한 포인터입니다. 플래그의 위쪽 단어에는 부동 소수점, 바이트 순서 및 문자 표현에 대해 OSF DCE에서 정의한 NDR 데이터 표현 플래그가 포함됩니다. 아래쪽 단어에는 COM 채널에서 정의한 대로 마샬링 컨텍스트 플래그가 포함됩니다. 필드 내 플래그의 정확한 레이아웃은 type_UserSize 함수에 설명되어 있습니다.

pBuffer 매개 변수는 현재 버퍼 포인터입니다. 이 포인터는 항목에 맞춰지거나 정렬되지 않을 수 있습니다. type<>_UserUnmarshal 함수는 버퍼 포인터를 적절하게 정렬하고, 데이터를 숨기지 않고, 새 버퍼 위치를 반환해야 합니다. 이 위치는 숨을 들이지 않은 개체 뒤의 첫 번째 바이트의 주소입니다.

pMyObj 매개 변수는 사용자 정의 형식 개체에 대한 포인터입니다.

다른 유형의 환경에서 NDR 엔진은 type>_UserUnmarshal 함수를 호출하기 전에 필요한 모든 데이터 변환을< 수행합니다. NDR 엔진은 이 사용자 데이터 형식에 대해 제공된 유선 형식 정의에 따라 이 데이터 변환을 수행합니다. 플래그는 보낸 사람의 데이터 표현을 나타냅니다.

user_marshal 및 wire_marshal 대한 마샬링 규칙

wire_marshal

user_marshal