NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체(ndischimney.h)

[TCP 굴뚝 오프로드 기능은 더 이상 사용되지 않으며 사용하면 안 됩니다.]

NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체입니다.

구문

typedef struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST {
  IN NDIS_OBJECT_HEADER                Header;
  IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
  struct                               _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
  IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
  struct                               _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
#endif
  OUT NDIS_STATUS                      Status;
  IN PVOID                             NdisReserved[3];
  IN OUT PNDIS_OFFLOAD_HANDLE          OffloadHandle;
  IN PVOID                             ProtocolReserved[2];
  IN PVOID                             MiniportReserved[2];
  IN PVOID                             ImReserved[2];
  IN PVOID                             Scratch[2];
  IN PVOID                             SourceHandle;
  IN NDIS_PORT_NUMBER                  PortNumber;
  IN OUT PNET_BUFFER_LIST              NetBufferListChain;
} NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, *PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;

멤버

Header

NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체의 헤더입니다. 헤더는 NDIS_OBJECT_HEADER 구조체로 서식이 지정됩니다. NDIS_OBJECT_HEADER 구조체에는 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체의 수정 번호, 메모리의 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조 바로 뒤에 있는 오프로드 상태 유형 및 헤더를 포함한 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체의 크기(바이트)가 포함됩니다.

NDIS_OBJECT_HEADER 구조체의 Type 멤버는 오프로드 상태의 형식을 나타내며, 메모리의 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조 바로 뒤에 있는 특정 오프로드 상태 구조체(또는 구조체)를 의미합니다.

지원되는 OFFLOAD_STATE_TYPE 값은 다음과 같습니다.

NeighborOffloadConstState

상수 인접 상태를 지정합니다. 이 상태는 로 형식이 지정됩니다. NEIGHBOR_OFFLOAD_STATE_CONST 구조체입니다.

NeighborOffloadCachedState

캐시된 인접 상태를 지정합니다. 이 상태는 로 형식이 지정됩니다. NEIGHBOR_OFFLOAD_STATE_CACHED 구조체입니다.

NeighborOffloadDelegatedState

위임된 인접 상태를 지정합니다. 이 상태는 로 형식이 지정됩니다. NEIGHBOR_OFFLOAD_STATE_DELEGATED 구조체입니다.

NeighborOffloadState

상수, 캐시됨 및 위임된 인접 상태를 포함하여 모든 인접 상태를 지정합니다. 이 상태는 NEIGHBOR_OFFLOAD_STATE_CONST 구조체로 형식이 지정되고 NEIGHBOR_OFFLOAD_STATE_CACHED 구조와 NEIGHBOR_OFFLOAD_STATE_DELEGATED 구조가 뒤따릅니다.

Ip4OffloadConstState

상수 경로 상태(IPv4)를 지정합니다. 이 상태는 로 형식이 지정됩니다. PATH_OFFLOAD_STATE_CONST 구조체입니다.

Ip4OffloadCachedState

캐시된 경로 상태(IPv4)를 지정합니다. 이 상태는 로 형식이 지정됩니다. PATH_OFFLOAD_STATE_CACHED 구조체입니다.

Ip4OffloadDelegatedState

위임된 경로 상태(IPv4)를 지정합니다. 이 상태는 로 형식이 지정됩니다. PATH_OFFLOAD_STATE_DELEGATED 구조체입니다. 현재 위임된 경로 상태가 없습니다. PATH_OFFLOAD_STATE_DELEGATED 구조체에는 변수가 없습니다.

Ip4OffloadState

상수, 캐시된 경로 상태 및 위임된 경로 상태를 포함하여 모든 경로 상태(IPv4)를 지정합니다. 이 상태는 PATH_OFFLOAD_STATE_CONST 구조로 형식이 지정되고 PATH_OFFLOAD_STATE_CACHED 구조와 PATH_OFFLOAD_STATE_DELEGATED 구조가 뒤따릅니다.

Ip6OffloadConstState

상수 경로 상태(IPv6)를 지정합니다. 이 상태는 PATH_OFFLOAD_STATE_CONST 구조체로 형식이 지정됩니다.

Ip6OffloadCachedState

캐시된 경로 상태(IPv6)를 지정합니다. 이 상태는 PATH_OFFLOAD_STATE_CACHED 구조체로 서식이 지정됩니다.

Ip6OffloadDelegatedState

위임된 경로 상태(IPv6)를 지정합니다. 이 상태는 PATH_OFFLOAD_STATE_DELEGATED 구조체로 형식이 지정됩니다. 현재 위임된 경로 상태가 없습니다. PATH_OFFLOAD_STATE_DELEGATED 구조체에는 변수가 없습니다.

Ip6OffloadState

상수, 캐시된 경로 및 위임된 경로 상태를 포함하여 모든 경로 상태(IPv6)를 지정합니다. 이 상태는 PATH_OFFLOAD_STATE_CONST 구조로 형식이 지정되고 PATH_OFFLOAD_STATE_CACHED 구조와 PATH_OFFLOAD_STATE_DELEGATED 구조가 뒤따릅니다.

TcpOffloadConstState

상수 TCP 상태를 지정합니다. 이 상태는 로 형식이 지정됩니다. TCP_OFFLOAD_STATE_CONST 구조체입니다.

TcpOffloadCachedState

캐시된 TCP 상태를 지정합니다. 이 상태는 로 형식이 지정됩니다. TCP_OFFLOAD_STATE_CACHED 구조체입니다.

TcpOffloadDelegatedState

위임된 TCP 상태를 지정합니다. 이 상태는 로 형식이 지정됩니다. TCP_OFFLOAD_STATE_DELEGATED 구조체입니다.

TcpOffloadResourceState

예약되어 있습니다. 이 OFFLOAD_STATE_TYPE 값과 TCP_OFFLOAD_RESOURCE_STATE 구조체는 현재 사용되지 않습니다.

TcpOffloadState

상수, 캐시됨 및 위임된 TCP 상태를 포함하여 모든 TCP 상태를 지정합니다. 이 상태는 TCP_OFFLOAD_STATE_CONST 구조체로 형식이 지정되고 TCP_OFFLOAD_STATE_CACHED 구조와 TCP_OFFLOAD_STATE_DELEGATED 구조가 뒤따릅니다.

FilterReservedOffloadState

필터 드라이버용으로 예약되어 있습니다.

NextBlock

헤더 멤버의 Type 멤버가 나타내는 오프로드 상태 계층(인접, 경로 또는 TCP)의 다음 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체에 대한 포인터입니다. NextBlock 포인터를 통해 연결된 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체는 항상 오프로드 상태의 동일한 계층에 있습니다. NULLNextBlock 값은 이 수준에서 추가적인 다음 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체가 없음을 나타냅니다.

_NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST

DependentBlockList

오프로드 상태의 종속 계층(오프로드 상태 트리의 상위 계층)에 있는 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체에 대한 포인터입니다.

TCP 굴뚝 오프로드의 경우:

인접 계층에 있는 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체의 DependentBlockList 멤버는 경로 계층의 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조만 가리킬 수 있습니다. 경로 계층에 있는 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체의 DependentBlockList 멤버는 TCP 계층의 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조만 가리킬 수 있습니다. TCP 계층에서 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체의 DependentBlockList 멤버는 항상 NULL입니다.

DependentBlockList이 NULL이면 종속 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체가 없음을 나타냅니다.

Status

오프로드 시작, 쿼리 오프로드, 오프로드 업데이트, 오프로드 무효화 또는 오프로드 종료 작업의 완료 상태 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결되거나 참조된 상태에서 수행되는 오프로드 작업을 종료합니다. 작업에 따라 NDIS는 다음 NDIS_STATUS 값 중 하나를 Status 멤버에 씁니다.

NDIS_STATUS_SUCCESS

오프로드 시작: 기본 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결된 상태와 즉시 종속된 모든 PROTOCOL_MINIPORT_OFFLOAD_BLOCK_LIST 구조체와 연결된 상태를 성공적으로 오프로드했습니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결되거나 참조되는 상태에서 작업을 성공적으로 수행했습니다.

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

오프로드 시작: 기본 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체와 연결된 상태를 성공적으로 오프로드했지만 하나 이상의 즉시 종속된 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체와 연결된 상태를 오프로드하지 못했습니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_FAILURE

오프로드 시작: 기본 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 오프로드하지 못했습니다. 오류의 원인을 분류할 수 없습니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체와 연결되거나 참조되는 상태에서 작업을 수행하지 못했습니다.

NDIS_STATUS_RESOURCES

오프로드 시작: 오프로드 대상이 충분한 호스트 메모리를 할당할 수 없으므로 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 오프로드하지 못했습니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_OFFLOAD_TCP_ENTRIES

오프로드 시작: 오프로드 대상이 TCP 연결 상태 개체를 할당할 수 없으므로 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 오프로드하지 못했습니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_OFFLOAD_PATH_ENTRIES

오프로드 시작: 오프로드 대상이 경로 상태 개체를 할당할 수 없으므로 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 오프로드하지 못했습니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES

오프로드 시작: 오프로드 대상이 인접 상태 개체를 할당할 수 없으므로 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 오프로드하지 못했습니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES

오프로드 시작: 호스트 스택이 에서 NULL이 아닌 DlSourceAddress 멤버를 지정했기 때문에 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 오프로드하지 못했습니다. NEIGHBOR_OFFLOAD_STATE_CONST 구조와 오프로드 대상은 구성 가능한 원본 MAC 주소를 지원하지 않거나 추가 원본 MAC 주소를 수락할 수 없습니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES

오프로드 시작: 오프로드 대상이 의 SourceAddress 포인터에서 참조하는 원본 IP 주소에 대한 데이터 구조를 할당할 수 없으므로 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 오프로드하지 못했습니다. PATH_OFFLOAD_STATE_CONST 구조체입니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER

오프로드 시작: 오프로드 대상이 충분한 TCP 전송 버퍼를 할당할 수 없으므로 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 오프로드하지 못했습니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER

오프로드 시작: 오프로드 대상이 충분한 TCP 수신 버퍼를 할당할 수 없으므로 오프로드 대상이 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 오프로드하지 못했습니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW

오프로드 시작: Offload 대상이 에 지정된 InitialRcvWnd 멤버로 인해 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 오프로드하지 못했습니다. TCP_OFFLOAD_STATE_CACHED 구조는 오프로드 대상이 지원할 수 있는 것보다 큽니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_OFFLOAD_VLAN_ENTRIES

오프로드 시작: 오프로드 대상에 추가 VLAN ID를 추적하기 위한 리소스가 부족합니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_OFFLOAD_VLAN_MISMATCH

오프로드 시작: 인접 VlanId 는 0이 아니고 인터페이스 VLAN ID 중 하나와 일치하지 않습니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NDIS_STATUS_OFFLOAD_PATH_MTU

오프로드 시작: TCP 연결에 대한 경로 MTU가 오프로드 대상이 지원하는 것보다 큽니다.

오프로드 쿼리, 업데이트, 무효화 또는 종료: 허용되는 상태 값이 아닙니다.

NdisReserved[3]

NDIS에서 사용하도록 예약되었습니다.

OffloadHandle

NDIS_OFFLOAD_HANDLE 구조체에 대한 포인터입니다. NDIS_OFFLOAD_HANDLE 구조체는 오프로드된 상태 개체에 대한 프로토콜 또는 중간 드라이버의 컨텍스트를 나타냅니다.

ProtocolReserved[2]

프로토콜 드라이버에서 사용하도록 예약되어 있습니다. 이 영역은 고유한 용도로 사용할 수 있습니다.

MiniportReserved[2]

오프로드 대상 또는 중간 드라이버의 미니포트 부분에서 사용하도록 예약되어 있습니다.

ImReserved[2]

이 영역을 자체 용도로 사용할 수 있는 중간 드라이버에서 사용하도록 예약되어 있습니다.

Scratch[2]

프로토콜 드라이버 또는 중간 드라이버는 내부 추적에 이 영역을 사용할 수 있습니다. 이 영역의 정보는 드라이버에 소유권이 있는 경우에만 유효합니다. NDIS_PROTOCOL_OFFLOAD_BLOCK_LIS T.

SourceHandle

이 멤버는 프로토콜 또는 중간 드라이버에 중요하지 않습니다. 프로토콜 또는 중간 드라이버는 이 멤버를 수정해서는 안됩니다.

상태 조작 작업의 완료를 전파할 때 중간 드라이버가 를 복사합니다.
SourceHandle 이 의 SourceHandle 멤버에 대한 IM 호출 항목에 저장한 경우NdisMXxxComplete 함수에 전달하는 구조체를 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

PortNumber

미니포트 어댑터 포트를 식별하는 포트 번호입니다. 미니포트 어댑터 포트 번호를 할당하려면 NdisMAllocatePort 함수를 호출합니다. 0 값은 미니포트 어댑터의 기본 포트를 식별합니다. 미니포트 드라이버가 지정된 어댑터에 대한 포트를 할당하지 않은 경우 기본 포트를 사용합니다.

NetBufferListChain

프로토콜 또는 중간 드라이버가 NULL 값을 지정하는 경우 NetBufferListChain 은 중요하지 않으며 기본 드라이버 또는 오프로드 대상에서 무시할 수 있습니다.

프로토콜 또는 중간 드라이버가 NULL 이 아닌 값을 지정하는 경우 NetBufferListChain 은 독립 실행형 구조체 또는 이러한 구조체의 연결된 목록의 첫 번째 구조체일 수 있는 NET_BUFFER_LIST 구조를 가리킵니다. 연결된 목록의 각 NET_BUFFER_LIST 구조체는 하나의 NET_BUFFER 구조를 설명합니다. NET_BUFFER 구조체는 MDL(메모리 설명자 목록) 체인에 매핑됩니다. NET_BUFFER_LIST 및 연결된 구조체는 물리적 메모리에 상주할 수 있도록 잠깁니다. 그러나 시스템 메모리에 매핑되지 않습니다.

NET_BUFFER 구조와 연결된 MDL에는 상태 조작 작업의 일부로 전달되거나 이러한 작업이 완료되는 데이터가 포함됩니다. 현재 연결된 목록에는 미해결 송신 데이터라는 한 가지 유형의 데이터만 포함될 수 있습니다. 데이터 보내기에 대한 자세한 내용은 오프로드 작업 중 및 후 미해결 송신 데이터 처리를 참조하세요.

오프로드 대상 또는 중간 드라이버는 TCP 연결의 오프로드를 종료할 때 오버리딩 드라이버 또는 호스트 스택에 미해결 전송 데이터를 전달할 수 있습니다. 이 경우 오프로드 대상은 를 호출할 때 NetBufferListChain 멤버에 대해 NULL이 아닌 값을 지정합니다. NdisMTerminateOffloadComplete 함수입니다. 오프로드 대상이 종료되는 TCP 연결에 대한 보내기 데이터를 전달하지 않는 경우 NetBufferListChain 멤버에 대한 NULL 값을 지정합니다.

설명

중간 드라이버는 에서 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조를 만듭니다.상태 조작 작업을 전파할 때 구조체를 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. When 이러한 작업의 완료를 전파하는 중간 드라이버는 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조를 사용하여 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조를 생성합니다.

NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체는 오프로드, 쿼리, 업데이트, 무효화 또는 종료될 상태를 포함하는 오프로드 상태 구조 로 메모리에서 바로 뒤에 올 수 있습니다. NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조체 헤더의Type 멤버는 오프로드 상태의 형식을 지정하고, 의미상 메모리의 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 구조 뒤에 있는 특정 오프로드 상태 구조체(또는 구조체)를 지정합니다.

요구 사항

요구 사항
헤더 ndischimney.h(Ndischimney.h 포함)

추가 정보

NDIS_OBJECT_HEADER

NEIGHBOR_OFFLOAD_STATE_CACHED

NEIGHBOR_OFFLOAD_STATE_CONST

NEIGHBOR_OFFLOAD_STATE_DELEGATED

NdisInitiateOffload

NdisInvalidateOffload

NdisMAllocatePort

NdisQueryOffload

NdisTerminateOffload

NdisUpdateOffload

PATH_OFFLOAD_STATE_CACHED

PATH_OFFLOAD_STATE_CONST

PATH_OFFLOAD_STATE_DELEGATED

ProtocolInitiateOffloadComplete ProtocolInvalidateOffloadComplete ProtocolQueryOffloadComplete ProtocolTerminateOffloadComplete ProtocolUpdateOffloadComplete

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED