NdisCloseCall 함수(ndis.h)
NdisCloseCall 은 지정된 VC에 대한 호출을 중단하도록 요청합니다.
구문
NDIS_STATUS NdisClCloseCall(
[in] NDIS_HANDLE NdisVcHandle,
[in, optional] NDIS_HANDLE NdisPartyHandle,
[in, optional] PVOID Buffer,
[in] UINT Size
);
매개 변수
[in] NdisVcHandle
닫혀 있거나 연결이 끊어진 호출의 VC에 대한 핸들입니다. 이 핸들은 VC가 원래 NdisCoCreateVc를 사용하여 만들어졌을 때 클라이언트가 발신 통화를 준비하든, 클라이언트에 들어오는 호출을 발송할 준비를 하는 호출 관리자에 의해 만들어졌을 때 NDIS에서 제공되었습니다.
[in, optional] NdisPartyHandle
다중 지점 VC 또는 NULL에서 삭제할 마지막 파티에 대한 핸들입니다. 다중 지점 VC인 경우 클라이언트는 NdisClMakeCall 또는 NdisClAddParty에 대한 이전 호출에서 이 핸들을 얻었습니다.
[in, optional] Buffer
연결을 닫을 때 원격 노드의 파티로 전송할 데이터를 포함하는 호출자 할당 버퍼에 대한 포인터입니다. 기본 매체에 따라 이 포인터는 NULL일 수 있습니다.
[in] Size
버퍼가 NULL인 경우 버퍼의 크기(바이트)를 0으로 지정합니다.
반환 값
NdisCloseCall이 NDIS_STATUS_PENDING 이외의 항목을 반환하는 경우 클라이언트는 ProtocolCloseCallComplete 함수에 대한 내부 호출을 수행해야 합니다. 그렇지 않으면 NDIS는 이 작업이 완료되면 클라이언트의 ProtocolCloseCallComplete 함수를 호출합니다.
설명
클라이언트는 일반적으로 다음 상황 중 하나에서 NdisCloseCall 을 호출합니다.
- 설정된 호출을 닫기 위해 NdisClMakeCall 을 사용하여 클라이언트에서 호출을 시작했는지 또는 원격 피어에서 제공되었고 클라이언트의 ProtocolClIncomingCall 함수에 의해 수락되었는지 여부입니다.
-
ProtocolClIncomingCloseCall 함수에서 설정된 호출을 분해합니다.
이 문제는 원격 당사자가 원격 당사자가 원래 시작한 수신 전화를 닫고 클라이언트가 수락한 경우에 발생합니다. 클라이언트에서 시작한 발신 호출의 경우 원격 당사자가 원격 노드에서 지점 간 연결을 닫거나 다중 지점 VC의 마지막 남은 당사자가 원격 노드에서 호출을 닫을 때 발생합니다.
-
ProtocolClMakeCallComplete 함수에서 발신 호출을 위해 클라이언트에서 시작한 시도를 중단합니다.
이는 호출 관리자가 NdisClMakeCall 에 전달된 클라이언트 지정 호출 매개 변수를 수정하고 클라이언트가 이러한 수정을 허용할 수 없다고 판단하는 경우에 발생합니다.
-
ProtocolClIncomingQoSChange 함수에서 설정된 호출을 분해합니다.
이는 VC에서 상대방이 제안한 QoS 변경이 클라이언트에서 허용되지 않는 경우에 발생합니다.
-
ProtocolClModifyCallQoSComplete 함수에서 설정된 호출을 해제합니다.
이는 VC에서 클라이언트에서 제안한 QoS 변경이 허용되지 않고 ProtocolClModifyCallQoSComplete 로 반환된 CM 수정 QoS가 클라이언트에서 허용되지 않는 경우에 발생합니다.
클라이언트가 NdisCloseCall을 호출하면 NDIS에서 NdisVcHandle을 닫는 것으로 표시하고 CM의 ProtocolCmCloseCall 함수를 호출합니다.
클라이언트에서 만든 멀티포인트 VC에서 설정된 호출을 해제하려면 클라이언트가 NdisClDropParty 를 한 번 이상 호출하여 NdisCloseCall을 호출하기 전에 VC의 마지막 파티를 제외한 모든 항목을 해제해야 합니다. 지정된 VC에 둘 이상의 파티가 연결된 경우 호출 관리자는 클라이언트의 멀티포인트 호출 닫기 요청에 실패합니다. NdisCloseCall에 전달된 NdisPartyHandle은 클라이언트가 지정된 NdisVcHandle을 사용하여 NdisClAddParty 또는 NdisClMakeCall에 대한 이전 호출에서 얻은 유효한 핸들일 수 있습니다.
클라이언트가 시작한 멀티포인트 호출에 대한 원격 당사자가 연결을 닫도록 요청하면 NDIS는 클라이언트에서 만든 멀티포인트 VC에 둘 이상의 처리 중인 파티가 있는 한 클라이언트의 ProtocolClDropParty 함수를 호출합니다. 마지막 남은 원격 당사자가 연결을 닫으면 NDIS는 클라이언트의 ProtocolClIncomingCloseCall 함수를 대신 호출합니다. 따라서 멀티포인트 연결을 설정하는 모든 클라이언트의 ProtocolClIncomingCloseCall 함수는 해당 멀티포인트 VC에서 마지막 남은 당사자를 식별하고 적절한 NdisPartyHandle 을 NdisCloseCall에 전달해야 합니다.
클라이언트가 NdisClCloseCall을 사용하여 NdisPartyHandle을 릴리스한 후 유지 관리 중인 파티별 상태에 대한 리소스를 해제(또는 다시 사용하기 위해 다시 초기화)할 수 있습니다. 그러나 NdisCloseCall 을 사용하여 시작한 작업이 완료될 때와 비슷한 방식으로 VC별 리소스를 해제하거나 다시 사용할 수 없습니다. VC가 제거될 때까지 다른 호출을 다시 사용하기 위해 다시 사용할 수 없는 NdisVcHandle은 여전히 유효하기 때문입니다. 클라이언트가 송신 호출을 위해 VC를 만든 경우 VC를 릴리스하거나 VC별 리소스를 다시 초기화한 경우 NdisCoDeleteVc 를 호출해야 합니다. 또는 프로토콜 CoDeleteVc 함수가 호출될 때까지 클라이언트는 이러한 리소스의 릴리스 또는 다시 초기화를 연기해야 합니다.
요구 사항
| 지원되는 최소 클라이언트 | Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(NdisCloseCall(NDIS 5.1 참조))에 대해 지원됩니다. Windows XP에서 NDIS 5.1 드라이버(NdisCloseCall(NDIS 5.1) 참조)에 대해 지원됩니다. |
| 대상 플랫폼 | 데스크톱 |
| 머리글 | ndis.h(Ndis.h 포함) |
| 라이브러리 | Ndis.lib |
| IRQL | <= DISPATCH_LEVEL |
| DDI 규정 준수 규칙 | Irql_Protocol_Driver_Function(ndis) |
참고 항목
ProtocolClIncomingCallQoSChange
피드백
다음에 대한 사용자 의견 제출 및 보기