Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Postępuj zgodnie ze wskazówkami w tym temacie, aby zarządzać strukturami NET_RING i ich elementami podczas transferu danych sieciowych. Reguły opisane w tym temacie dotyczą tego, które członkowie elementów pierścienia sieci mogą być modyfikowane przez sterowniki klientów i kiedy, w zależności od scenariusza ścieżki danych, jak również ogólnych informacji, które sterowniki klientów powinny mieć na uwadze w przypadku tych struktur.
Ważny
Sterowniki klientów powinny być zgodne z tymi wskazówkami we wszystkich fazach opracowywania. Jeśli sterownik klienta nie jest zgodny z tymi wskazówkami podczas testowania za pomocą Weryfikatora sterowników , weryfikator sterowników zgłasza naruszenie i powoduje sprawdzenie błędów na urządzeniu testowym.
NET_RING
Po uruchomieniu nadrzędnej kolejki pakietów NET_RINGwszystkie indeksy w pierścieniu są inicjowane na 0.
W poniższej tabeli opisano, które elementy członkowskie pierścienia sieci mogą modyfikować sterowniki klienta.
| Pole | Ma prawo do modyfikowania sterownika klienta |
|---|---|
| OSReserved1 | Nie |
| ElementStride | Nie |
| LiczbaElementów | Nie |
| ElementIndexMask | Nie |
| IndeksKońcowy | Nie |
| OSReserved0 | Nie |
| OSReserved2 | Nie |
| BeginIndex | Tak (wymagane) |
| NastępnyIndeks | Tak (opcjonalnie) Uwaga: struktura nigdy nie odczytuje NextIndex. |
| Zadrapanie | Tak (opcjonalnie) Uwaga: framework nigdy nie odczytuje Scratch. |
| Bufor | Nie |
Sterowniki klienta nie mogą modyfikować żadnych elementów członkowskich tylko do odczytu tej struktury ani nigdy nie powinny zwiększać BeginIndex przez EndIndex w trakcie wywoływania EvtPacketQueueAdvance.
Aby uzyskać więcej informacji na temat własności indeksu w pierścieniach sieciowych, zobacz Wprowadzenie do pierścieni sieciowych.
NET_PACKET
Pola w NET_PACKET są wrażliwe na różne konteksty, w których działa ścieżka danych. Określa, czy pakiet Ignoruj pole jest ustawione i czy sterownik odbiera (Rx) lub przesyła pakiet (Tx) zmienia zestaw reguł, który jest stosowany do pakietu.
Poniższa tabela zawiera wskazówki dla kierowców w każdym scenariuszu.
| Rx lub Tx | Pole ignorowania jest ustawiane przez... | Notatki |
|---|---|---|
| Rx | Sterownik klienta |
|
| Tx | NetAdapterCx |
|
UKŁAD_ZAKRESU_SIECI
Podczas operacji Rx pole LayoutNET_PACKET podlega następującym regułom:
- Wszystkie pola z wyjątkiem Reserved0 muszą być inicjowane przez sterownik klienta.
- Jeśli Layer2Type jest ustawiona na NetPacketLayer2TypeEthernet, Layer2HeaderLength musi być 14 lub nowszy.
- Jeśli Layer2Type ma ustawioną wartość NetPacketLayer2TypeNull, Layer2HeaderLength musi być ustawiona na wartość 0.
- Jeśli Layer3Type jest typem IPv4, layer3HeaderLength musi być 20 lub nowszy.
- Jeśli Layer3Type jest typem IPv6, Layer3HeaderLength musi być 40 lub nowszy.
- Jeśli Layer4Type jest ustawiony na Tcp, długość nagłówka warstwy 4 musi być 40 lub większa.
- Jeśli Layer4Type jest ustawiony na UDP, wtedy Layer4HeaderLength musi być 8 lub większy.
- Pola typu warstwy muszą mieścić się w odpowiednim zakresie wartości wyliczeniowych.
Layout nie jest używany podczas tx.
NET_FRAGMENT
NET_FRAGMENT reguły pól zależą od tego, czy sterownik odbiera, czy przesyła, oraz od tego, czy bufory fragmentów są dołączone do pakietów przez sterownik, czy przez ramy.
| Rx lub Tx | Notatki |
|---|---|
| Rx |
|
| Tx |
|