저전력 프로토콜 오프로드 추가 및 삭제

저전력 프로토콜 오프로드를 추가하기 위해 NDIS 프로토콜 드라이버는 OID_PM_ADD_PROTOCOL_OFFLOAD OID 집합 요청을 실행합니다. NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버에는 NDIS_PM_PROTOCOL_OFFLOAD 구조체에 대한 포인터가 포함되어 있습니다.

참고 들어오는 패킷이 오프로드된 프로토콜과 패턴(예: 구성 오류로 인해)과 일치하는 경우 네트워크 어댑터는 패킷에 응답하고 컴퓨터를 절전 모드에서 해제해야 합니다.

NDIS_PM_PROTOCOL_OFFLOAD 구조에는 다음 정보가 포함됩니다.

멤버 Description

우선 순위

프로토콜 오프로드의 우선 순위를 포함합니다. 더 많은 프로토콜 오프로드에 사용할 수 있는 리소스가 없을 때 오버리싱 드라이버가 더 높은 우선 순위 프로토콜 오프로드를 추가하는 경우 NDIS는 리소스를 해제하기 위해 우선 순위가 낮은 프로토콜 오프로드를 제거할 수 있습니다. 미니포트 드라이버는 이 멤버를 무시해야 합니다. 프로토콜 드라이버는 NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_LOWEST NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_HIGHEST 이르기까지 미리 정의된 범위 내의 모든 값을 제공할 수 있습니다.

ProtocolOffloadType

프로토콜 오프로드의 형식을 지정하는 NDIS_PM_PROTOCOL_OFFLOAD_TYPE 값을 포함합니다.

FriendlyName

저전력 프로토콜 오프로드에 대한 사용자가 읽을 수 있는 설명을 포함하는 NDIS_PM_COUNTED_STRING 구조를 포함합니다.

ProtocolOffloadId

오프로드된 프로토콜을 식별하는 NDIS 제공 값을 포함합니다. NDIS가 OID_PM_ADD_PROTOCOL_OFFLOAD OID 요청을 기본 NDIS 드라이버로 보내거나 지나치게 많은 드라이버에 요청을 완료하기 전에 NDIS는 ProtocolOffloadId 를 네트워크 어댑터의 프로토콜 오프로드 중 고유한 값으로 설정합니다.

NextProtocolOffloadOffset

OID 요청 InformationBuffer의 시작인 오프셋을 OID_PM_PROTOCOL_OFFLOAD_LIST OID 목록의 다음 NDIS_PM_PROTOCOL_OFFLOAD 구조체에 포함합니다. OID_PM_PROTOCOL_OFFLOAD_LIST 대한 자세한 내용은 저전력 프로토콜 오프로드의 현재 매개 변수 설정 가져오기를 참조하세요.

ProtocolOffloadParameters

공용 구조체의 IPv4ARPParameters, IPv6NSParameters 또는 Dot11RSNRekeyParameters 구조체 중 하나를 포함합니다.

용어 Description

IPv4ARPParameters

IPv4 ARP 매개 변수를 포함합니다.

IPv6NSParameters

IPv6 NS(인접 요청) 매개 변수를 포함합니다.

Dot11RSNRekeyParameters

IEEE 802.11 강력한 RSN(보안 네트워크) 핸드셰이크 매개 변수 포함

 

NDIS는 네트워크 어댑터에 고유한 식별자를 오프로드된 모든 프로토콜에 할당합니다. 프로토콜 오프로드 식별자는 네트워크 어댑터에서 오프로드되는 각 프로토콜에 대한 고유한 값입니다. 그러나 프로토콜 오프로드 식별자는 모든 네트워크 어댑터에서 전역적으로 고유하지 않습니다. NDIS는 NDIS가 미니포트 드라이버에 OID_PM_ADD_PROTOCOL_OFFLOAD OID 요청을 보낼 때 이 식별자를 기본 미니포트 드라이버에 전달합니다. 프로토콜을 오프로드하는 데 성공하면 NDIS는 프로토콜을 오프로드한 지나치게 많은 드라이버에 식별자를 반환합니다. 오버리싱 드라이버는 식별자를 사용하여 이전에 오프로드된 프로토콜을 제거합니다. 오프로드된 프로토콜이 네트워크 어댑터에서 제거될 때 프로토콜 오프로드 식별자는 상위 계층 드라이버에 대한 상태 표시에도 사용됩니다.

프로토콜 드라이버는 해당 네트워크 어댑터에 대한 바인딩을 닫기 전에 네트워크 어댑터에서 오프로드된 프로토콜을 모두 제거해야 합니다. 저전력 프로토콜 오프로드를 제거하기 위해 프로토콜 드라이버는 OID_PM_REMOVE_PROTOCOL_OFFLOAD OID 집합 요청을 보냅니다. NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버에는 프로토콜 오프로드 식별자에 대한 포인터가 포함되어 있습니다.

NDIS를 사용하면 여러 NDIS 프로토콜 드라이버가 동일한 네트워크 어댑터에 프로토콜 오프로드를 추가할 수 있습니다. 요청된 오프로드된 프로토콜 수가 네트워크 어댑터가 지원할 수 있는 프로토콜 수보다 높은 경우 올바른 프로토콜 집합이 네트워크 어댑터에 오프로드되었는지 확인하기 위해 프로토콜 드라이버는 오프로드된 각 프로토콜에 우선 순위를 할당합니다. 네트워크 어댑터가 리소스가 부족하여 NDIS가 새 높은 우선 순위 프로토콜을 오프로드할 수 없는 경우 NDIS는 우선 순위가 낮은 오프로드된 프로토콜 중 하나를 삭제하고(있는 경우) 우선 순위가 높은 프로토콜을 다시 오프로드하려고 시도합니다.

참고 미니포트 드라이버는 저전력 프로토콜 오프로드 추가 요청에 실패하고 NDIS가 프로토콜 오프로드의 우선 순위를 다시 지정할 수 있도록 STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL 상태 코드를 반환해야 합니다.

우선 순위가 높은 프로토콜을 오프로드한 결과 우선 순위가 낮은 오프로드된 프로토콜 중 하나가 삭제되면 NDIS는 삭제된 프로토콜 오프로드를 설정한 지나치게 많은 드라이버에 알리기 위해 NDIS_STATUS_PM_OFFLOAD_REJECTED 상태 표시를 보냅니다. NDIS_STATUS_INDICATION 구조의 StatusBuffer 멤버에는 거부된 프로토콜 오프로드의 프로토콜 오프로드 식별자가 포함되어 있습니다. NDIS는 NDIS_PM_PROTOCOL_OFFLOAD 구조의 ProtocolOffloadId 멤버에 프로토콜 오프로드 식별자를 제공했습니다.