다음을 통해 공유


프로시저 헤더 설명자

헤더는 NDR 엔진의 수명 동안 여러 번 확장되었습니다. 현재 컴파일러는 컴파일러의 모드에 따라 다른 헤더를 생성합니다. 그러나 최신 헤더는 이전 헤더의 상위 집합입니다.

이전 –Oi 헤더

헤더의 형식은 다음과 같습니다.

handle_type<1> 
Oi_flags<1>
[rpc_flags<4>]
proc_num<2>  
stack_size<2>
[explicit_handle_description<>]

여기서 handle_type<1> 은 다음 표에 표시된 값 중 하나일 수 있습니다.

Hex Handle
31 FC_BIND_GENERIC
32 FC_BIND_PRIMITIVE
33 FC_AUTO_HANDLE
34 FC_CALLBACK_HANDLE
0 (명시적 핸들)

 

handle_type<1> 필드가 0이 아닌 경우 프로시저는 표시된 종류의 암시적 핸들을 사용합니다. 자세한 내용은 핸들 항목을 참조하세요. handle_type<1> 필드가 0이면 바인딩에 사용되는 핸들이 프로시저의 매개 변수 중 하나입니다.

명시적 핸들은 기본형, 제네릭 및 컨텍스트일 수 있습니다. 마지막 토큰에는 다음 FC 토큰이 있습니다.

Hex Handle
30 FC_BIND_CONTEXT

 

규칙에 따라 DCOM 인터페이스의 핸들 형식은 FC_AUTO_HANDLE.

Oi_flags<1> 필드는 다음 플래그의 8비트 마스크입니다.

Hex 플래그 의미
01 Oi_FULL_PTR_USED 전체 포인터 패키지를 사용합니다.
02 Oi_RPCSS_ALLOC_USED RpcSs 메모리 패키지를 사용합니다.
04 Oi_OBJECT_PROC 개체 인터페이스의 프로시저입니다.
08 Oi_HAS_RPCFLAGS 프로시저에 0이 아닌 Rpc 플래그가 있습니다.
10 Oi_* 오버로드됨.
20 Oi_* 오버로드됨.
40 Oi_USE_NEW_INIT_ROUTINES Windows NT3.5 Beta2+ init 루틴을 사용합니다.
80 사용되지 않습니다.

 

다음 플래그가 오버로드됩니다.

Hex 플래그 의미
10 ENCODE_IS_USED 피클링에만 사용됩니다.
20 DECODE_IS_USED 피클링에만 사용됩니다.
10 Oi_IGNORE_OBJECT_EXCEPTION_HANDLING 더 이상 사용되지 않음(이전 OLE).
20 Oi_HAS_COMM_OR_FAULT 원시 RPC에서만 [comm _, fault_status]입니다.
20 Oi_OBJ_USE_V2_INTERPRETER DCOM에서만 –Oif 인터프리터를 사용합니다.

 

rpc_flags<4> 필드는 RPC_MESSAGE 구조체의 RpcFlags 필드를 설정하는 방법을 설명합니다. 이 필드는 Oi_flags 1> 필드가 Oi_HAD_RPCFLAGS<설정된 경우에만 존재합니다. 이 필드가 없으면 원격 프로시저에 대한 RPC 플래그가 0입니다.

참고

성능을 위해 비동기 인터프리터에는 항상 rpc_flags<4> 필드가 있습니다.

 

proc_num<2> 필드는 프로시저의 프로시저 번호를 제공합니다.

stack_size<2> 는 이 포인터 및/또는 반환 값을 포함하여 스택에 있는 모든 매개 변수의 총 크기를 제공합니다.

explicit_handle_description<> 필드는 이 문서의 뒷부분에 설명되어 있습니다. 프로시저에서 암시적 핸들을 사용하는 경우에는 이 필드가 없습니다.