PROTOCOL_CL_INCOMING_CLOSE_CALL 콜백 함수(ndis.h)

ProtocolClIncomingCloseCall 함수는 모든 연결 지향 NDIS 클라이언트에서 사용됩니다. 이러한 모든 클라이언트에는 완전한 기능의 ProtocolClIncomingCloseCall 함수가 있어야 합니다.

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

구문

PROTOCOL_CL_INCOMING_CLOSE_CALL ProtocolClIncomingCloseCall;

void ProtocolClIncomingCloseCall(
  [in] NDIS_STATUS CloseStatus,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PVOID CloseData,
  [in] UINT Size
)
{...}

매개 변수

[in] CloseStatus

연결 해제의 원인을 나타내는 상태 지정합니다. 일반적으로 호출에 대한 원격 당사자가 연결을 닫도록 요청했음을 나타내기 위해 NDIS_STATUS_SUCCESS. 다른 값은 네트워크의 문제로 인해 호출 관리자가 연결을 종료했음을 나타냅니다.

[in] ProtocolVcContext

연결이 닫히는 VC에 대한 클라이언트의 VC별 컨텍스트 영역에 대한 핸들을 지정합니다. CloseStatus 값이 무엇이든 클라이언트는 이 컨텍스트 영역에 저장된 NdisVcHandle이 지정한 VC에서 데이터를 보내거나 받을 수 없습니다.

[in] CloseData

프로토콜별 닫기 메시지를 포함하는 버퍼에 대한 포인터로, 호출 관리자가 네트워크를 통해 수신한 원격 클라이언트에서 제공하거나 이 매개 변수가 NULL일 수 있습니다.

CloseStatus가 NDIS_STATUS_SUCCESS 경우 기본 네트워크 매체가 연결을 닫을 때 데이터 전송을 지원하지 않는 경우 이 매개 변수는 NULL입니다. 그러나 특정 호출 관리자는 네트워크의 문제로 인한 통화 중단 시 클라이언트에 추가 진단 정보를 전달하는 구조를 정의할 수 있습니다.

[in] Size

CloseDataNULL인 경우 CloseData에서 버퍼의 크기(바이트)를 지정합니다.

반환 값

없음

설명

ProtocolClIncomingCloseCall 호출은 다음 중 하나가 발생했음을 나타냅니다.

  • 호출 관리자는 클라이언트가 ProtocolVcContext의 VC별 컨텍스트 영역에 저장된 NdisVcHandle로 식별된 설정된 연결을 닫기 위해 네트워크를 통해 요청을 받았습니다.
  • 호출 관리자는 네트워크 문제로 인해 설정된 연결에서 추가 데이터 전송을 방지할 수 있음을 발견했습니다.
두 경우 모두 ProtocolClIncomingCloseCall 은 클라이언트의 자체 클라이언트에 연결이 끊어지고 있음을 알리는 것과 같이 프로토콜 결정 작업을 수행해야 합니다. 예를 들어 닫을 호출이 클라이언트에서 만든 멀티포인트 VC인 경우 ProtocolClIncomingCloseCall 은 단일 파티만 다중 포인트 VC에 남아 있을 때까지 NdisClDropParty 를 한 번 이상 호출해야 합니다.

지정된 VC가 단일 지점 또는 다중 지점 연결이든 관계없이 ProtocolClIncomingCloseCallNdisCloseCall 을 호출하여 클라이언트가 이 특정 VC에 대한 데이터를 보내거나 받을 것으로 기대하지 않는다는 것을 인정해야 합니다. 호출 관리자가 이 VC를 만든 경우 ProtocolClIncomingCloseCallNdisCloseCall을 호출한 후 컨트롤을 반환해야 합니다. 호출 관리자가 만든 VC를 삭제하거나 다시 사용하는 것은 호출 관리자의 책임입니다.

클라이언트가 원래 나가는 호출에 대해 이 VC를 만든 경우 ProtocolClIncomingCloseCall필요한 경우 NdisClDropPartyNdisCloseCall을 여러 번 호출한 후 다음 중 하나를 수행할 수 있습니다.

  • CloseStatus가 NDIS_STATUS_SUCCESS 경우 NdisCoDeleteVc를 사용하여 VC를 분해하고 클라이언트의 VC별 컨텍스트 영역을 해제하거나 NdisCoCreateVc에 대한 후속 호출에서 다시 사용할 수 있도록 준비합니다.
  • CloseStatus가 NDIS_STATUS_SUCCESS 경우 클라이언트가 만든 VC를 유지하고 NdisClMakeCall에 대한 후속 호출에서 다시 사용할 VC별 컨텍스트 영역을 준비합니다.
  • 그렇지 않으면 NdisCoDeleteVc 를 사용하여 VC를 분해하고 호출 관리자가 네트워크가 작동하지 않는 것으로 표시되면 VC별 컨텍스트 영역을 해제합니다.

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

예를 들어 " MyClIncomingCloseCall"이라는 ProtocolClIncomingCloseCall 함수를 정의하려면 다음 코드 예제와 같이 PROTOCOL_CL_INCOMING_CLOSE_CALL 형식을 사용합니다.

PROTOCOL_CL_INCOMING_CLOSE_CALL MyClIncomingCloseCall;

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

_Use_decl_annotations_
VOID
 MyClIncomingCloseCall(
    NDIS_STATUS  CloseStatus,
    NDIS_HANDLE  ProtocolVcContext,
    PVOID  CloseData,
    UINT  Size
    )
  {...}

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

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

요구 사항

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

추가 정보

NdisClCloseCall

NdisClDropParty

NdisClMakeCall

NdisCmDispatchIncomingCloseCall

NdisCoCreateVc

NdisCoDeleteVc

NdisFreeMemory

NdisFreeToNPagedLookasideList NdisMCmDispatchIncomingCloseCall

ProtocolClDropPartyComplete

ProtocolCoDeleteVc