PROTOCOL_CL_ADD_PARTY_COMPLETE 콜백 함수(ndis.h)

ProtocolClAddPartyComplete 함수는 다중 포인트 연결을 설정하는 연결 지향 NDIS 클라이언트에 필요합니다. 이러한 클라이언트에는 NdisClAddParty로 시작하는 비동기 작업을 완료하려면 ProtocolClAddPartyComplete 함수가 있어야 합니다. 그렇지 않으면 이러한 프로토콜 드라이버의 등록된 ProtocolClAddPartyComplete 함수는 단순히 제어를 반환할 수 있습니다.

참고PROTOCOL_CL_ADD_PARTY_COMPLETE 형식을 사용하여 함수를 선언해야 합니다. 자세한 내용은 다음 예제 섹션을 참조하세요.
 

구문

PROTOCOL_CL_ADD_PARTY_COMPLETE ProtocolClAddPartyComplete;

void ProtocolClAddPartyComplete(
  [in] NDIS_STATUS Status,
  [in] NDIS_HANDLE ProtocolPartyContext,
  [in] NDIS_HANDLE NdisPartyHandle,
  [in] PCO_CALL_PARAMETERS CallParameters
)
{...}

매개 변수

[in] Status

다음 중 하나일 수 있는 클라이언트 시작 추가 파티 작업의 최종 상태 지정합니다.

NDIS_STATUS_SUCCESS

지정된 파티가 클라이언트의 활성 멀티포인트 VC에 추가되었습니다.

NDIS_STATUS_RESOURCES

NDIS는 새 당사자를 추적하기에 충분한 리소스를 할당할 수 없습니다.

NDIS_STATUS_FAILURE

클라이언트가 잘못된 NdisVcHandleNdisClAddParty에 전달했습니다.

NDIS_STATUS_XXX

호출 관리자의 ProtocolCmAddParty 함수는 CM 결정 값을 반환하여 VC에 파티를 추가할 수 없는 이유를 나타냅니다.

[in] ProtocolPartyContext

NdisClAddParty에 원래 전달된 클라이언트 제공 핸들을 지정합니다.

[in] NdisPartyHandle

상태가 NDIS_STATUS_SUCCESS 경우 이 NDIS 제공 핸들은 이 당사자와 관련된 호출 관리자와 클라이언트 간의 연결을 나타냅니다. 그렇지 않으면 파티 추가 시도가 실패했으며 클라이언트는 이 매개 변수를 잘못된 핸들로 간주해야 합니다.

[in] CallParameters

원래 클라이언트가 NdisClAddParty를 호출하기 위해 설정했지만 이후에 호출 관리자가 수정한 형식 CO_CALL_PARAMETERS 구조에 대한 포인터입니다.

반환 값

없음

설명

ProtocolClAddPartyComplete 호출은 클라이언트가 NdisClAddParty를 호출할 때 시작된 비동기 작업의 완료를 나타냅니다. 입력 상태가 NDIS_STATUS_SUCCESS 이외의 값으로 설정된 경우 ProtocolClAddPartyCompleteProtocolPartyContextCallParameters 에서 클라이언트 할당 버퍼를 해제하거나 다시 사용할 수 있습니다.

파티 추가 시도가 성공하면 ProtocolClAddPartyComplete는 클라이언트의 ProtocolPartyContext 영역에서 이 파티와 관련된 NDIS 라이브러리 함수에 대한 후속 호출을 위해 입력 NdisPartyHandle을 저장해야 합니다. 예를 들어 클라이언트가 나타내는 원격 당사자가 먼저 연결을 닫지 않는 한 NdisClDropParty 에 대한 후속 호출에서 이 핸들을 전달해야 합니다.

CallParameters의 구조체는 원래 클라이언트에 의해 할당되고 초기화되었으며 이 포인터를 에 전달했습니다.
NdisClAddParty. 그러나 호출 관리자는 클라이언트의 추가 파티 요청을 처리하는 동안 CM이 네트워크 또는 신호 피어와 협상한 결과를 반영하도록 클라이언트 제공 값을 수정했을 수 있습니다. 호출 관리자가 수정했는지 여부를 확인하기 위해 ProtocolClAddPartyComplete는 CALL_PARAMETERS_CHANGED 설정되었는지 여부에 대해 이 구조체의 Flags 멤버를 검사 수 있습니다. 이 경우 ProtocolClAddPartyComplete 는 CM의 수정이 허용되지 않는 한 Client가 ProtocolPartyContext 에서 이 호출에 대해 유지 관리하는 파티별 상태를 업데이트해야 합니다. 특정 신호 프로토콜은 클라이언트가 이 경우에 수행할 수 있는 작업을 결정합니다. 일반적으로 클라이언트는 CM 수정 호출 매개 변수가 허용되지 않는 경우 NdisClDropParty 를 호출합니다.

호출 관리자의 신호 프로토콜에 따라 CallParameters 의 트래픽 매개 변수는 특정 멀티포인트 연결의 모든 당사자에 대해 동일할 수 있습니다. 즉, 이러한 호출 관리자의 클라이언트는 클라이언트가 원래 NdisClMakeCall로 설정한 멀티포인트 연결에 당사자를 추가하므로 각 파티의 대상 주소만 제공하고 NdisClAddParty를 호출할 때마다 원래 멀티포인트 VC에 대해 설정된 대로 트래픽 매개 변수를 그대로 둘 수 있습니다.

ProtocolClAddPartyComplete 함수를 정의하려면 먼저 정의 중인 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 함수 형식 집합을 제공합니다. 함수 형식을 사용하여 함수를 선언하면 드라이버에 대한 코드 분석, SDV( 정적 드라이버 검증 도구 ) 및 기타 확인 도구에서 오류를 찾을 수 있으며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.

예를 들어 이름이 " MyClAddPartyComplete"인 ProtocolClAddPartyComplete 함수를 정의하려면 다음 코드 예제와 같이 PROTOCOL_CL_ADD_PARTY_COMPLETE 형식을 사용합니다.

PROTOCOL_CL_ADD_PARTY_COMPLETE MyClAddPartyComplete;

그런 다음 다음과 같이 함수를 구현합니다.

_Use_decl_annotations_
VOID
 MyClAddPartyComplete(
    NDIS_STATUS  Status,
    NDIS_HANDLE  ProtocolPartyContext,
    NDIS_HANDLE  NdisPartyHandle,
    PCO_CALL_PARAMETERS  CallParameters
    )
  {...}

PROTOCOL_CL_ADD_PARTY_COMPLETE 함수 형식은 Ndis.h 헤더 파일에 정의됩니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 PROTOCOL_CL_ADD_PARTY_COMPLETE 함수 형식에 적용되는 주석이 사용되도록 합니다. 함수 선언 요구 사항에 대한 자세한 내용은 NDIS 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.

Use_decl_annotations 대한 자세한 내용은 함수 동작 주석 지정을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(ProtocolClAddPartyComplete(NDIS 5.1 참조))에 대해 지원됩니다. Windows XP에서 NDIS 5.1 드라이버(ProtocolClAddPartyComplete(NDIS 5.1) 참조)에 대해 지원됩니다.
대상 플랫폼 Windows
헤더 ndis.h(Ndis.h 포함)
IRQL <= DISPATCH_LEVEL

추가 정보

CO_CALL_PARAMETERS

NdisClAddParty

NdisClDropParty

NdisClMakeCall

NdisCmAddPartyComplete

NdisMCmAddPartyComplete

ProtocolClIncomingDropParty

ProtocolCmAddParty