Udostępnij przez


Usuwanie portu wirtualnego

Nadrzędny sterownik wystawia żądanie ustawienia identyfikatora obiektu (OID) OID_NIC_SWITCH_DELETE_VPORT w celu usunięcia niedomyślnego portu wirtualnego (VPort) na przełączniku karty sieciowej. Sterownik overlying może usunąć tylko VPort, który sam wcześniej utworzył, wysyłając żądanie metody OID OID_NIC_SWITCH_CREATE_VPORT.

Członek InformationBuffer struktury NDIS_OID_REQUEST zawiera wskaźnik do struktury NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS.

Nakładający się sterownik, taki jak stos wirtualizacji, może usunąć niestandardowy VPort, który sam wcześniej utworzył. Sterownik nadrzędny tworzy VPort, wydając żądanie metody OID OID_NIC_SWITCH_CREATE_VPORT.

Przed wysłaniem żądania zestawu identyfikatora OID OID_NIC_SWITCH_DELETE_VPORT, sterownik nadrzędny musi wykonać następujące czynności:

  • Sterowniki nadrzędne muszą wyczyścić lub przenieść wszystkie filtry odbioru, które sterownik wcześniej ustawił na VPort, zanim VPort zostanie usunięty. Filtry odbierania są ustawiane poprzez żądania OID OID_RECEIVE_FILTER_SET_FILTER i przenoszone przez żądania OID OID_RECEIVE_FILTER_MOVE_FILTER.

  • Sterownik nakładający ustawia element członkowski VPortId struktury NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS na identyfikator niestandardowego VPortu do usunięcia.

    Uwaga Sterownik na wyższym poziomie nie powinien ustawiać członka VPortId na NDIS_DEFAULT_PORT_NUMBER. Ten identyfikator VPort jest zarezerwowany dla domyślnego portu VPort dołączonego do funkcji fizycznej PCI Express (PCIe) na karcie sieciowej. Domyślny port VPort zawsze istnieje i nie jest jawnie usuwany, mimo że istnieje żądanie ustawienia identyfikatora OID OID_NIC_SWITCH_DELETE_VPORT.

Sterownik nadrzędny wywołuje NdisOidRequest, aby przekazać żądanie OID_NIC_SWITCH_DELETE_VPORT do podstawowego sterownika miniportu PF. Gdy sterownik miniportu odbiera żądanie OID_NIC_SWITCH_DELETE_VPORT, sterownik musi wykonać następujące czynności:

  • Sterownik musi zwolnić zasoby sprzętowe i programowe przydzielone dla określonego wirtualnego portu.

  • Sterownik musi odłączyć określony VPort od PF lub funkcji wirtualnej PCIe (VF).

    Jeśli port VPort jest dołączony do VF, stos wirtualizacji zapewnia, że sterownik miniportu VF uruchomiony w systemie operacyjnym gościa został wcześniej wstrzymany i zatrzymany. W związku z tym wszystkie pakiety odbierane z VPort, które zostały wskazane wcześniej, powinny zostać zwrócone do sterownika miniport VF.

    Jeśli VPort jest dołączony do PF, sterownik miniportu PF musi zatrzymać wszelkie dodatkowe DMA do pamięci współdzielonej skojarzonej z VPort. Sterownik miniportu PF musi upewnić się, że wszystkie wcześniej zasygnalizowane pakiety odbiorcze przez VPort są zwracane do miniportu. Sterownik miniportu PF nie może przekazywać do NDIS żadnych dodatkowych wskazań dotyczących odebranych danych, które wskazują identyfikator VPort w strukturze pakietu NET_BUFFER_LIST. Po przetworzeniu wszystkich wskazanych pakietów odbiorczych z VPort do sterownika miniport PF, musi on zwolnić pamięć współdzieloną powiązaną z VPort, wywołując NdisFreeSharedMemory.

Następujące kwestie dotyczą usuwania portów wirtualnych:

  • Nadrzędny sterownik protokołu musi usunąć wszystkie niedomyślne VPorty, które utworzył, przed wywołaniem NdisCloseAdapterEx.

  • Nadrzędny sterownik filtru musi usunąć wszystkie niedomyślne VPorts, które utworzył w funkcji FilterDetach.

  • Zanim usługa NDIS wyda żądanie OID_NIC_SWITCH_DELETE_SWITCH usunięcia przełącznika sieciowego na karcie sieciowej, gwarantuje, że wszystkie niedomyślne VPorts zostaną usunięte z tego przełącznika.

  • Tylko niestandardowe VPorty można jawnie usunąć za pośrednictwem żądań OID OID_NIC_SWITCH_DELETE_SWITCH. Domyślny port VPort jest niejawnie usuwany, gdy sterownik miniportu PF usuwa domyślny przełącznik karty sieciowej. Aby uzyskać więcej informacji, zobacz Usuwanie przełącznika karty sieciowej.