struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST (ndischimney.h)

[Fitur offload cerobong asap TCP tidak digunakan lagi dan tidak boleh digunakan.]

Struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST adalah blok penyusun dasar pohon status offload cerobong asap TCP. Pohon status offload dapat berisi satu atau beberapa struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

Sintaks

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;

Anggota

Header

Header struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. Header diformat sebagai struktur NDIS_OBJECT_HEADER . Struktur NDIS_OBJECT_HEADER berisi nomor revisi struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, jenis status offload yang segera mengikuti struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dalam memori, dan ukuran struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, termasuk header, dalam byte.

Jenis anggota struktur NDIS_OBJECT_HEADER menunjukkan jenis status offload, dan dengan implikasi, struktur status offload tertentu (atau struktur) yang segera mengikuti struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dalam memori.

Nilai OFFLOAD_STATE_TYPE berikut ini didukung:

NeighborOffloadConstState

Menentukan status tetangga yang konstan. Status ini diformat sebagai NEIGHBOR_OFFLOAD_STATE_CONST struktur.

NeighborOffloadCachedState

Menentukan status tetangga yang di-cache. Status ini diformat sebagai NEIGHBOR_OFFLOAD_STATE_CACHED struktur.

NeighborOffloadDelegatedState

Menentukan status tetangga yang didelegasikan. Status ini diformat sebagai NEIGHBOR_OFFLOAD_STATE_DELEGATED struktur.

NeighborOffloadState

Menentukan semua informasi status tetangga, termasuk status tetangga yang konstanta, di-cache, dan didelegasikan. Status ini diformat sebagai struktur NEIGHBOR_OFFLOAD_STATE_CONST, diikuti dengan struktur NEIGHBOR_OFFLOAD_STATE_CACHED, diikuti oleh struktur NEIGHBOR_OFFLOAD_STATE_DELEGATED.

Ip4OffloadConstState

Menentukan status jalur konstanta (IPv4). Status ini diformat sebagai PATH_OFFLOAD_STATE_CONST struktur.

Ip4OffloadCachedState

Menentukan status jalur yang di-cache (IPv4). Status ini diformat sebagai PATH_OFFLOAD_STATE_CACHED struktur.

Ip4OffloadDelegatedState

Menentukan status jalur yang didelegasikan (IPv4). Status ini diformat sebagai PATH_OFFLOAD_STATE_DELEGATED struktur. Saat ini tidak ada status jalur yang didelegasikan. Struktur PATH_OFFLOAD_STATE_DELEGATED tidak berisi variabel apa pun.

Ip4OffloadState

Menentukan semua status jalur (IPv4), termasuk status jalur konstanta, di-cache, dan didelegasikan. Status ini diformat sebagai struktur PATH_OFFLOAD_STATE_CONST, diikuti dengan struktur PATH_OFFLOAD_STATE_CACHED, diikuti dengan struktur PATH_OFFLOAD_STATE_DELEGATED.

Ip6OffloadConstState

Menentukan status jalur konstanta (IPv6). Status ini diformat sebagai struktur PATH_OFFLOAD_STATE_CONST.

Ip6OffloadCachedState

Menentukan status jalur yang di-cache (IPv6). Status ini diformat sebagai struktur PATH_OFFLOAD_STATE_CACHED.

Ip6OffloadDelegatedState

Menentukan status jalur yang didelegasikan (IPv6). Status ini diformat sebagai struktur PATH_OFFLOAD_STATE_DELEGATED. Saat ini, tidak ada status jalur yang didelegasikan. Struktur PATH_OFFLOAD_STATE_DELEGATED tidak berisi variabel apa pun.

Ip6OffloadState

Menentukan semua informasi status jalur (IPv6), termasuk status jalur konstanta, di-cache, dan didelegasikan. Status ini diformat sebagai struktur PATH_OFFLOAD_STATE_CONST, diikuti dengan struktur PATH_OFFLOAD_STATE_CACHED, diikuti dengan struktur PATH_OFFLOAD_STATE_DELEGATED.

TcpOffloadConstState

Menentukan status TCP konstanta. Status ini diformat sebagai TCP_OFFLOAD_STATE_CONST struktur.

TcpOffloadCachedState

Menentukan status TCP yang di-cache. Status ini diformat sebagai TCP_OFFLOAD_STATE_CACHED struktur.

TcpOffloadDelegatedState

Menentukan status TCP yang didelegasikan. Status ini diformat sebagai TCP_OFFLOAD_STATE_DELEGATED struktur.

TcpOffloadResourceState

Dicadangkan. Nilai OFFLOAD_STATE_TYPE ini, serta struktur TCP_OFFLOAD_RESOURCE_STATE, saat ini tidak digunakan.

TcpOffloadState

Menentukan semua informasi status TCP, termasuk status TCP konstanta, di-cache, dan didelegasikan. Status ini diformat sebagai struktur TCP_OFFLOAD_STATE_CONST, diikuti dengan struktur TCP_OFFLOAD_STATE_CACHED, diikuti dengan struktur TCP_OFFLOAD_STATE_DELEGATED.

FilterReservedOffloadState

Dicadangkan untuk driver filter.

NextBlock

Penunjuk ke struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST berikutnya pada lapisan status offload (tetangga, jalur, atau TCP) yang ditunjukkan oleh anggota Jenis anggota Header . NDIS_MINIPORT_OFFLOAD_BLOCK_LIST struktur yang ditautkan melalui pointer NextBlock selalu berada pada lapisan yang sama dari status offload. Nilai NextBlockNULL menunjukkan bahwa tidak ada struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST berikutnya tambahan pada tingkat ini.

_NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

DependentBlockList

Penunjuk ke struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST yang berada pada lapisan dependen status offload (lapisan yang lebih tinggi di pohon status offload). Untuk offload cerobong asap TCP:

  • Anggota DependentBlockList dari struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST di lapisan tetangga hanya dapat menunjuk ke struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST di lapisan jalur.
  • Anggota DependentBlockList dari struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST di lapisan jalur hanya dapat menunjuk ke struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST di lapisan TCP.
  • Anggota DependentBlockList dari struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST di lapisan TCP selalu NULL.
Nilai DependentBlockListNULL menunjukkan bahwa tidak ada struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dependen.

Status

Status penyelesaian offload yang dimulai, offload kueri, perbarui offload, batalkan offload, atau hentikan operasi offload yang dilakukan target offload pada status yang terkait dengan, atau direferensikan oleh, struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. Bergantung pada operasi, target offload menulis salah satu nilai NDIS_STATUS berikut ke anggota Status :

NDIS_STATUS_SUCCESS

Memulai offload: Target offload berhasil membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dan status yang terkait dengan semua struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST yang segera bergantung.

Kueri, perbarui, batalkan, atau hentikan offload: Target offload berhasil melakukan operasi pada status yang terkait dengan, atau direferensikan oleh, struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

Memulai offload: Target offload berhasil membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, tetapi gagal membongkar status yang terkait dengan satu atau beberapa struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST yang segera bergantung.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_FAILURE

Memulai offload: Target offload gagal membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. Penyebab kegagalan tidak dapat dikategorikan.

Kueri, perbarui, batalkan, atau hentikan offload: Target offload gagal melakukan operasi pada status yang terkait dengan, atau direferensikan oleh, struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_RESOURCES

Memulai offload: Target offload gagal membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST karena target offload tidak dapat mengalokasikan memori host yang cukup.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_OFFLOAD_TCP_ENTRIES

Memulai offload: Target offload gagal membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST karena target offload tidak dapat mengalokasikan objek status koneksi TCP.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_OFFLOAD_PATH_ENTRIES

Memulai offload: Target offload gagal membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST karena target offload tidak dapat mengalokasikan objek status jalur.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES

Memulai offload: Target offload gagal membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST karena target offload tidak dapat mengalokasikan objek status tetangga.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES

Memulai offload: Target offload gagal membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST karena tumpukan host menentukan anggota DlSourceAddressnon-NULL di NEIGHBOR_OFFLOAD_STATE_CONST struktur, dan target offload tidak mendukung alamat MAC sumber yang dapat dikonfigurasi atau tidak dapat menerima alamat MAC sumber tambahan.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES

Memulai offload: Target offload gagal membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST karena target offload tidak dapat mengalokasikan struktur data untuk alamat IP sumber yang direferensikan oleh penunjuk SourceAddress di PATH_OFFLOAD_STATE_CONST struktur.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER

Memulai offload: Target offload gagal membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST karena target offload tidak dapat mengalokasikan buffer transmisi TCP yang cukup.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER

Memulai offload: Target offload gagal membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST karena target offload tidak dapat mengalokasikan buffer penerima TCP yang cukup.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW

Memulai offload: Target offload gagal membongkar status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST karena anggota InitialRcvWnd yang ditentukan dalam TCP_OFFLOAD_STATE_CACHED struktur lebih besar dari yang dapat didukung oleh target offload.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_OFFLOAD_VLAN_ENTRIES

Memulai offload: Target offload telah kehabisan sumber daya untuk melacak ID VLAN tambahan.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_OFFLOAD_VLAN_MISMATCH

Memulai offload: VlanId tetangga bukan nol dan tidak cocok dengan salah satu ID VLAN antarmuka.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NDIS_STATUS_OFFLOAD_PATH_MTU

Jalur MTU untuk koneksi TCP lebih besar dari yang didukung target offload.

Kueri, perbarui, batalkan, atau hentikan offload: Bukan nilai status yang diizinkan.

NdisReserved[2]

Dicadangkan untuk digunakan oleh NDIS.

MiniportOffloadContext

Pointer ke lokasi memori tempat target offload menulis nilai PVOID. Nilai PVOID mereferensikan area konteks offload tempat target offload menyimpan status yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. Jika status adalah status baru yang akan dilepaskan oleh target offload, lokasi memori yang diacu oleh MiniportOffloadContext berisi nilai NULL . Setelah membongkar status, target offload menulis nilai PVOID ke lokasi memori ini. Nilai PVOID yang disediakan oleh target offload mereferensikan area konteks offload tempat status diturunkan. Jika anggota MiniportOffloadContext itu sendiri adalah NULL, struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST adalah tempat penampung di pohon status offload.

NdisOffloadHandle

Handel yang disediakan target offload dalam panggilan berikutnya ke Fungsi NdisTcpOffloadEventHandler atau Fungsi NdisTcpOffloadReceiveHandler saat membuat indikasi pada status offload yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST ini.

ProtocolReserved[2]

Dicadangkan untuk digunakan oleh driver protokol, yang dapat menggunakan area ini untuk tujuan mereka sendiri. Target offload tidak boleh mengubah nilai ini.

MiniportReserved[2]

Dicadangkan untuk digunakan oleh target offload, yang dapat menggunakan area ini untuk tujuan mereka sendiri, seperti mengantri status offload yang terkait dengan struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

ImReserved[2]

Dicadangkan untuk digunakan oleh driver perantara, yang dapat menggunakan area ini untuk tujuan mereka sendiri. Target offload tidak boleh mengubah nilai ini.

Scratch[2]

Target offload dapat menggunakan area ini untuk pelacakan internal. Informasi di area ini hanya berlaku sementara target offload memiliki kepemilikan NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

SourceHandle

Anggota ini tidak signifikan untuk target offload. Target offload tidak boleh mengubah anggota ini.

PortNumber

Nomor port yang mengidentifikasi port adaptor miniport. Untuk menetapkan nomor port adaptor miniport, panggil fungsi NdisMAllocatePort . Nilai nol mengidentifikasi port default adaptor miniport. Gunakan port default jika driver miniport belum mengalokasikan port untuk adaptor yang ditentukan.

NetBufferListChain

Ketika tumpukan host menentukan nilai NULL , NetBufferListChain tidak signifikan dan dapat diabaikan oleh target offload.

Ketika tumpukan host menentukan nilai non-NULL , NetBufferListChain menunjuk ke struktur NET_BUFFER_LIST yang dapat menjadi struktur yang berdiri sendiri atau struktur pertama dalam daftar tertaut struktur tersebut. Setiap struktur NET_BUFFER_LIST dalam daftar tertaut menjelaskan satu struktur NET_BUFFER . Struktur NET_BUFFER memetakan ke rantai daftar deskriptor memori (MDL). Struktur NET_BUFFER_LIST dan terkait terkunci sehingga mereka tetap tinggal dalam memori fisik. Namun, mereka tidak dipetakan ke dalam memori sistem.

MDL yang terkait dengan struktur NET_BUFFER berisi data yang diteruskan tumpukan host ke target offload sebagai bagian dari operasi offload. Target offload menyelesaikan data tersebut secara asinkron kembali ke tumpukan host dengan memanggil fungsi NdisTcpOffloadXxxComplete yang sesuai. Saat ini, daftar yang ditautkan hanya dapat berisi satu jenis data: pengiriman data yang luar biasa. Untuk informasi selengkapnya, lihat Menangani Pengiriman Data Yang Berutang Selama dan Setelah Operasi Offload.

Target offload dapat meneruskan pengiriman data yang luar biasa ke tumpukan host saat mengakhiri offload koneksi TCP. Dalam hal ini, target offload menentukan nilai non-NULL untuk anggota NetBufferListChain saat memanggil Fungsi NdisMTerminateOffloadComplete . Jika target offload tidak meneruskan pengiriman data untuk koneksi TCP yang sedang dihentikan, target tersebut harus menentukan nilai NULL untuk anggota NetBufferListChain .

Keterangan

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST struktur dapat dihubungkan bersama-sama untuk membangun kerangka kerja pohon negara offload cerobong asap TCP.

Melalui NDIS, tumpukan host melewati penunjuk OffloadBlockList , yang mereferensikan pohon status offload ke salah satu fungsi target offload berikut:

Target offload mengembalikan pohon ke tumpukan host dengan meneruskan penunjuk yang sama ke fungsi penyelesaian yang sesuai: Struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dapat segera diikuti dalam memori oleh struktur status offload yang berisi status yang akan dibongkar, dikueri, diperbarui, tidak valid, atau dihentikan. Jenis anggota Header struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST menentukan jenis status offload, dan secara implikasi, struktur status offload tertentu (atau struktur) yang mengikuti struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dalam memori.

Target tumpukan host dan offload menggunakan anggota *MiniportOffloadContext dan NdisOffloadHandle dari struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST untuk mereferensikan status offload. Untuk informasi selengkapnya, lihat Menyimpan dan Mereferensikan Status Terbongkar.

Struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dapat melakukan salah satu dari beberapa fungsi dalam pohon status offload. Ini dapat berfungsi sebagai tempat penampung, linker, atau dapat menyampaikan status baru untuk dibongkar oleh target offload. Untuk informasi selengkapnya, lihat Tempat Penampung, Linker, dan Offload Baru.

Sebelum menyelesaikan offload yang dimulai, offload kueri, perbarui offload, batalkan offload, atau hentikan operasi offload, target offload harus menulis status penyelesaian ke anggota Status dari setiap struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST di pohon status.

Persyaratan

Persyaratan Nilai
Header ndischimney.h (termasuk Ndischimney.h)

Lihat juga

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