다음을 통해 공유


RPC_CALL_ATTRIBUTES_V2_A 구조체(rpcasync.h)

RPC_CALL_ATTRIBUTES_V2 구조체는 RpcServerInqCallAttributes 함수에 매개 변수를 제공합니다. 버전 2는 로컬 주소 및 클라이언트 프로세스 ID에 대한 지원을 지정합니다.

구문

typedef struct tagRPC_CALL_ATTRIBUTES_V2_A {
  unsigned int              Version;
  unsigned long             Flags;
  unsigned long             ServerPrincipalNameBufferLength;
  unsigned char             *ServerPrincipalName;
  unsigned long             ClientPrincipalNameBufferLength;
  unsigned char             *ClientPrincipalName;
  unsigned long             AuthenticationLevel;
  unsigned long             AuthenticationService;
  BOOL                      NullSession;
  BOOL                      KernelModeCaller;
  unsigned long             ProtocolSequence;
  unsigned long             IsClientLocal;
  HANDLE                    ClientPID;
  unsigned long             CallStatus;
  RpcCallType               CallType;
  RPC_CALL_LOCAL_ADDRESS_V1 *CallLocalAddress;
  unsigned short            OpNum;
  UUID                      InterfaceUuid;
} RPC_CALL_ATTRIBUTES_V2_A;

멤버

Version

RPC_CALL_ATTRIBUTES 구조체의 버전입니다. 이 구조체의 경우 이 값을 2로 설정해야 합니다.

Flags

이 구조체가 전달된 RpcServerInqCallAttributes 호출로 채워야 하는 이 구조체의 멤버를 나타내는 비트 마스크 플래그입니다.

의미
RPC_QUERY_SERVER_PRINCIPAL_NAME
RpcServerInqCallAttributes가 이 구조체의 ServerPrincipalName 멤버를 채워야 했음을 나타냅니다.
RPC_QUERY_CLIENT_PRINCIPAL_NAME
RpcServerInqCallAttributes가 이 구조체의 ClientPrincipalName 멤버를 채워야 했음을 나타냅니다.
RPC_QUERY_CALL_LOCAL_ADDRESS
RpcServerInqCallAttributes가 이 구조체의 CallLocalAddress 멤버를 채워야 했음을 나타냅니다.
RPC_QUERY_CLIENT_PID
RpcServerInqCallAttributes가 이 구조체의 ClientPID 멤버를 채워야 했음을 나타냅니다. 이 플래그는 ncalrpc 프로토콜 시퀀스에 대해서만 지원됩니다.

ServerPrincipalNameBufferLength

ServerPrincipalName의 길이(바이트)입니다. 부족한 경우 ServerPrincipalName 은 변경되지 않으며 ServerPrincipalNameBufferLength 는 종료 되는 NULL 문자를 포함하여 필요한 버퍼 길이를 나타내고 ERROR_MORE_DATA 반환됩니다. ServerPrincipalNameBufferLength가 필요 이상으로 길면 반환 시 종결 NULL 문자를 포함하여 사용된 실제 길이(바이트)로 설정됩니다. 설명 부분을 참조하세요.

프로토콜 시퀀스가 서버 보안 주체 이름 검색을 지원하지 않으면 반환 시 ServerPrincipalNameBufferLength 가 0으로 설정되고 ServerPrincipalName 이 가리키는 버퍼는 수정되지 않습니다. Windows XP: ncacn_* 프로토콜 시퀀스 그룹만 서버 보안 주체 이름 검색을 지원합니다.

RPC_QUERY_SERVER_PRINCIPAL_NAME 플래그를 지정하지 않으면 ServerPrincipalNameBufferLength 는 무시됩니다. ServerPrincipalNameBufferLength가 0이 아니고 ServerPrincipalNameNULL이면 ERROR_INVALID_PARAMETER 반환됩니다.

ServerPrincipalName

플래그에서 요청되고 프로토콜 시퀀스에서 지원되는 경우 서버 보안 주체 이름에 대한 포인터입니다. RPC_S_OK 또는 ERROR_MORE_DATA 이외의 반환 값이 있으면 ServerPrincipalName 의 콘텐츠가 정의되지 않았으며 RPC에 의해 수정되었을 수 있습니다.

ClientPrincipalNameBufferLength

ClientPrincipalName이 가리키는 버퍼의 길이(바이트)입니다. 부족한 경우 ClientPrincipalName 은 변경되지 않으며 ClientPrincipalNameBufferLength 는 종료 되는 NULL 문자를 포함하여 필요한 버퍼 길이를 나타내고 ERROR_MORE_DATA 반환됩니다. ClientPrincipalNameBufferLength가 필요 이상으로 길면 반환 시 종결 NULL 문자를 포함하여 사용된 실제 길이(바이트)로 설정됩니다.

프로토콜 시퀀스가 클라이언트 보안 주체 이름 검색을 지원하지 않으면 반환 시 ClientPrincipalNameBufferLength 가 0으로 설정되고 ClientPrincipalName 이 가리키는 버퍼는 수정되지 않습니다. Windows XP: ncalrpc 프로토콜 시퀀스만 클라이언트 보안 주체 이름 검색을 지원합니다.

RPC_QUERY_CLIENT_PRINCIPAL_NAME 플래그를 지정하지 않으면 ClientPrincipalNameBufferLength 는 무시됩니다. ClientPrincipalNameBufferLength가 0이 아니고 ClientPrincipalNameNULL이면 ERROR_INVALID_PARAMETER 반환됩니다.

ClientPrincipalName

Flags 멤버에서 요청되고 프로토콜 시퀀스에서 지원되는 경우 클라이언트 주체 이름에 대한 포인터입니다. RPC_S_OK 또는 ERROR_MORE_DATA 이외의 반환 값이 있으면 ClientPrincipalName 의 콘텐츠가 정의되지 않으며 RPC에서 수정되었을 수 있습니다.

AuthenticationLevel

호출에 대한 인증 수준입니다. RPC 에서 지원하는 인증 수준은 인증 수준 상수를 참조하세요.

AuthenticationService

원격 프로시저 호출에 사용되는 인증 서비스 또는 보안 공급자입니다.

NullSession

Null 세션이 사용되는지 여부를 지정합니다. 0은 Null 세션을 통해 호출이 오지 않음을 나타냅니다. 다른 값은 Null 세션을 나타냅니다.

KernelModeCaller

ProtocolSequence

호출이 이루어진 프로토콜 시퀀스를 나타내는 상수입니다.

IsClientLocal

클라이언트의 지역성(로컬, 원격 또는 알 수 없음)을 나타내는 RpcCallClientLocality 열거형 값입니다.

ClientPID

호출 클라이언트의 프로세스 ID를 포함하는 핸들입니다. 이 필드는 ncalrpc 프로토콜 시퀀스에 대해서만 지원되며 Flags 매개 변수에 RPC_QUERY_CLIENT_PID 지정된 경우에만 채워집니다.

CallStatus

RPC 호출의 상태 지정하는 비트 필드입니다.

의미
RPC_CALL_STATUS_IN_PROGRESS
0x01
호출이 진행 중입니다.
RPC_CALL_STATUS_CANCELLED
0x02
호출이 취소되었습니다.
RPC_CALL_STATUS_DISCONNECTED
0x03
클라이언트의 연결이 끊어졌습니다.

CallType

RPC 호출의 형식을 나타내는 RpcCallType 열거형 값입니다.

CallLocalAddress

호출이 이루어진 로컬 주소에 대한 정보를 서버에 포함하는 RPC_CALL_LOCAL_ADDRESS 구조체에 대한 포인터입니다.

플래그에 RPC_QUERY_CALL_LOCAL_ADDRESS 지정한 경우 이 필드는 NULL이 아니어야 합니다. 그렇지 않으면 RPC_S_INVALID_ARG 반환됩니다.

애플리케이션에서 제공하는 버퍼가 충분하지 않으면 RpcServerInqCallAttributes 는 ERROR_MORE_DATA 반환합니다.

OpNum

해당 IDL 파일의 호출과 연결된 opnum 값입니다.

InterfaceUuid

호출이 이루어지는 인터페이스 UUID입니다.

설명

RPC_CALL_ATTRIBUTES 구조는 버전 관리 체계를 사용하여 접미사 식별자를 사용하여 새 함수를 도입하지 않고도 RpcServerInqCallAttributes 함수가 새 기능을 통합할 수 있도록 합니다. 예를 들어 헤더에서 간단한 #define 식별되는 번째 버전의 RPC_CALL_ATTRIBUTES 새 멤버를 추가하여 해당 대체 함수를 해제하지 않고도 RpcServerInqCallAttributes 함수의 이후 버전에 기본 제공되는 새 기능을 용이하게 할 수 있습니다.

Version 멤버는 호출 애플리케이션에서 사용하는 RPC_CALL_ATTRIBUTES 구조체(현재 RPC_CALL_ATTRIBUTES_V1 또는 RPC_CALL_ATTRIBUTES_V2)의 버전을 나타냅니다. 이 ID를 사용하면 RPC 런타임에서 가장 최신 버전의 구조를 사용하지 않는 애플리케이션에 대해 이전 버전과의 호환성을 제공할 수 있습니다.

프로세스가 종료될 때까지 ClientPID 는 클라이언트에서 해당 프로세스를 고유하게 식별합니다. 프로세스가 종료되면 ClientPID 에서 지정한 프로세스 ID를 새 프로세스에서 사용할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
머리글 rpcasync.h(Rpc.h 포함)

추가 정보

RpcServerInqCallAttributes