다음을 통해 공유


NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체(ndischimney.h)

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

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조는 TCP 굴뚝 오프로드 상태 트리의 기본 구성 요소입니다. 오프로드 상태 트리에는 하나 이상의 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체가 포함될 수 있습니다.

통사론

typedef struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST {
  IN NDIS_OBJECT_HEADER                Header;
  IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
  struct                               _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
  IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
  struct                               _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
#endif
  OUT NDIS_STATUS                      Status;
  IN PVOID                             NdisReserved[2];
  IN OUT PVOID                         *MiniportOffloadContext;
  IN NDIS_HANDLE                       NdisOffloadHandle;
  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_MINIPORT_OFFLOAD_BLOCK_LIST, *PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST;

회원

Header

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

NDIS_OBJECT_HEADER 구조체의 형식 멤버는 오프로드 상태의 형식을 나타내며, 메모리의 NDIS_MINIPORT_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_MINIPORT_OFFLOAD_BLOCK_LIST 구조체에 대한 포인터입니다. NextBlock 포인터를 통해 연결된 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체는 항상 오프로드 상태의 동일한 계층에 있습니다. NULLNextBlock 값은 이 수준에서 추가적인 다음 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조가 없음을 나타냅니다.

_NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

DependentBlockList

오프로드 상태의 종속 계층(오프로드 상태 트리의 상위 계층)에 있는 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체에 대한 포인터입니다. TCP 굴뚝 오프로드의 경우:

  • 인접 계층에 있는 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체의 DependentBlockList 멤버는 경로 계층의 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조만 가리킬 수 있습니다.
  • 경로 계층에 있는 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체의 DependentBlockList 멤버는 TCP 계층의 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조만 가리킬 수 있습니다.
  • TCP 계층에서 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체의 DependentBlockList 멤버는 항상 NULL .
NULLDependentBlockList 값은 종속 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조가 없음을 나타냅니다.

Status

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

NDIS_STATUS_SUCCESS

오프로드 시작: 오프로드 대상은 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조와 연결된 상태와 즉시 종속된 모든 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 성공적으로 오프로드했습니다.

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

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

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

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

NDIS_STATUS_FAILURE

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

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

NDIS_STATUS_RESOURCES

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

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

NDIS_STATUS_OFFLOAD_TCP_ENTRIES

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

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

NDIS_STATUS_OFFLOAD_PATH_ENTRIES

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

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

NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES

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

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

NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES

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

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

NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES

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

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

NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER

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

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

NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER

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

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

NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW

오프로드 시작: InitialRcvWnd 멤버가 지정된 NDIS_MINIPORT_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[2]

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

MiniportOffloadContext

오프로드 대상이 PVOID 값을 쓰는 메모리 위치에 대한 포인터입니다. PVOID 값은 오프로드 대상이 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조와 연결된 상태를 저장하는 오프로드 컨텍스트 영역을 참조합니다. 상태가 오프로드 대상에 의해 오프로드될 새 상태인 경우 MiniportOffloadContext 가리키는 메모리 위치에 NULL 값이 포함됩니다. 상태를 오프로드한 후 오프로드 대상은 이 메모리 위치에 PVOID 값을 씁니다. 오프로드 대상에서 제공하는 PVOID 값은 상태가 오프로드된 오프로드 컨텍스트 영역을 참조합니다. MiniportOffloadContext 멤버 자체가 NULL 경우 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체는 오프로드 상태 트리의 자리 표시자입니다.

NdisOffloadHandle

오프로드 대상이 다음에 호출할 때 제공하는 핸들입니다. NdisTcpOffloadEventHandler 함수 또는 NdisTcpOffloadReceiveHandler는 이 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조와 연결된 오프로드 상태를 표시할 때 함수를.

ProtocolReserved[2]

프로토콜 드라이버에서 사용하도록 예약되어 있으며, 이 영역은 고유한 용도로 사용할 수 있습니다. 오프로드 대상은 이 값을 수정해서는 안 됩니다.

MiniportReserved[2]

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조와 연결된 오프로드 상태를 큐에 대기하는 등 고유한 용도로 이 영역을 사용할 수 있는 오프로드 대상에서 사용하도록 예약됩니다.

ImReserved[2]

중간 드라이버에서 사용하도록 예약되어 있으며, 이 영역은 고유한 용도로 사용할 수 있습니다. 오프로드 대상은 이 값을 수정해서는 안 됩니다.

Scratch[2]

오프로드 대상은 내부 추적에 이 영역을 사용할 수 있습니다. 이 영역의 정보는 오프로드 대상에 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 소유권이 있는 경우에만 유효합니다.

SourceHandle

이 멤버는 오프로드 대상에 중요하지 않습니다. 오프로드 대상은 이 멤버를 수정해서는 안됩니다.

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에는 호스트 스택이 오프로드 작업의 일부로 오프로드 대상에 전달하는 데이터가 포함됩니다. 오프로드 대상은 적절한 NdisTcpOffloadXxxComplete 함수를 호출하여 이러한 데이터를 호스트 스택으로 비동기적으로 다시 완료합니다. 현재 연결된 목록에는 한 가지 유형의 데이터(미해결 송신 데이터)만 포함될 수 있습니다. 자세한 내용은 오프로드 작업 중 및 후 미해결 송신 데이터 처리참조하세요.

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

발언

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조를 함께 연결하여 상태 트리 오프로드할TCP 굴뚝의 프레임워크를 빌드할 수 있습니다.

NDIS를 통해 호스트 스택은 오프로드 대상의 다음 함수 중 하나에 오프로드 상태 트리를 참조하는 OffloadBlockList 포인터를 전달합니다.

오프로드 대상은 동일한 포인터를 해당 완료 함수에 전달하여 트리를 호스트 스택으로 반환합니다. NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조는 오프로드, 쿼리, 업데이트, 무효화 또는 종료할 상태를 포함하는 오프로드 상태 구조 메모리에서 바로 뒤에 올 수 있습니다. NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체의 헤더형식 멤버는 메모리의 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조 뒤에 있는 특정 오프로드 상태 구조체(또는 구조체)와 오프로드 상태의 형식을 지정합니다.

호스트 스택 및 오프로드 대상은 *MiniportOffloadContext 사용하고 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체의 멤버를 NdisOffloadHandle 사용하여 오프로드된 상태를 참조합니다. 자세한 내용은 오프로드된 상태 저장 및 참조하는참조하세요.

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조체는 오프로드 상태 트리에서 여러 함수 중 하나를 수행할 수 있습니다. 자리 표시자, 링커로 작동하거나 오프로드 대상에 의해 오프로드될 새 상태를 전달할 수 있습니다. 자세한 내용은 자리 표시자, 링커 및 새 오프로드 참조하세요.

오프로드 시작, 쿼리 오프로드, 업데이트 오프로드, 오프로드 무효화 또는 오프로드 작업을 종료하기 전에 오프로드 대상은 상태 트리에 있는 각 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 구조의 상태 멤버에 완료 상태를 기록해야 합니다.

요구 사항

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

참고 항목

MiniportInitiateOffload

MiniportInvalidateOffload

MiniportQueryOffload

MiniportTerminateOffload

MiniportUpdateOffload

NDIS_OBJECT_HEADER

NEIGHBOR_OFFLOAD_STATE_CACHED

NEIGHBOR_OFFLOAD_STATE_DELEGATED

NdisMAllocatePort

NdisMInitiateOffloadComplete

NdisMInvalidateOffloadComplete NdisMQueryOffloadStateComplete NdisMTerminateOffloadComplete

NdisMUpdateOffloadComplete

NdisTcpOffloadEventHandler

NdisTcpOffloadReceiveHandler

PATH_OFFLOAD_STATE_CACHED

PATH_OFFLOAD_STATE_CONST

PATH_OFFLOAD_STATE_DELEGATED

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED