Udostępnij przez


Zestaw reguł VirtualStorport (Storport)

Użyj tych reguł, aby sprawdzić, czy sterownik prawidłowo wywołuje DDI, które są istotne dla sterowników wirtualnego miniportu Storport (VMiniport).

W tym dziale

Temat Opis

DoubleExFreePool

Ta reguła sprawdza, czy sterownik nie próbuje zwolnić tego samego bloku pamięci puli dwa razy.

DoubleKeSetEvent

Ta reguła sprawdza, czy element KeSetEvent nie jest wywoływany dwukrotnie w tym samym obiekcie zdarzenia. Jeśli ten sam obiekt zdarzenia jest przekazywany do procedury, sterownik narusza regułę.

IoFreeIrp

Ta reguła sprawdza, czy IRP przydzielony przez IoAllocateIrp zostanie uwolniony przez IoFreeIrp lub czy jego procedura kończąca zostanie ustawiona przez IoSetCompletionRoutine.

StorPortVirtualDevice

Ta reguła sprawdza, czy po wyjściu z procedury HwStorFindAdapter pole VirtualDevice w strukturze PORT_CONFIGURATION_INFORMATION (Storport) zostało ustawione na WARTOŚĆ FALSE. Reguła ma zastosowanie tylko do fizycznych miniportów StorPort.

StorPortVirtualDevice2

Ta reguła sprawdza, czy po wyjściu z procedury HwStorFindAdapter pole VirtualDevice w strukturze PORT_CONFIGURATION_INFORMATION (Storport) zostało ustawione na wartość TRUE. Reguła ma zastosowanie tylko do wirtualnych miniportów StorPort.

W regionie krytycznym

Ta reguła sprawdza, czy wywołania sterownika do niektórych funkcji synchronizacji są wykonywane tylko wtedy, gdy normalne dostarczanie APC jądra jest wyłączone.

ZwRegistryCreate

Ta reguła sprawdza, czy dojście do klucza rejestru utworzonego za pomocą funkcji ZwCreateKey jest następnie prawidłowo używane przez inne procedury ZwXxx . Nie można wywołać procedury ZwOpenKey na już otwartym dojściu. Procedury ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwClose, i ZwDeleteKey nie mogą być wywoływane na uchwycie, który nie jest otwarty. Przed zwróceniem należy również zamknąć uchwyt.

ZwRegistryOpen

Ta reguła sprawdza, czy dojście do klucza rejestru otwartego za pośrednictwem ZwOpenKey jest następnie używane poprawnie przez inne procedury ZwXxx. Procedury ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwClose i ZwDeleteKey nie mogą być wywoływane na uchwycie, który nie jest otwarty. Przed zwróceniem należy również zamknąć uchwyt.

Aby wybrać zestaw reguł VirtualStorport

  1. Wybierz projekt sterownika (.vcxProj) w programie Microsoft Visual Studio. W menu sterowników kliknij Uruchom Weryfikator Sterowników Statycznych….

  2. Kliknij kartę Reguły . W obszarze Zestawy reguł wybierz pozycję VirtualStorport.

    Aby wybrać domyślny zestaw reguł w oknie wiersza polecenia dla deweloperów programu Visual Studio, określ parametr VirtualStorport.sdv z opcją /check . Przykład:

    msbuild /t:sdv /p:Inputs="/check:VirtualStorport.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Aby uzyskać więcej informacji, zobacz Użycie Static Driver Verifier do Znalezienia Defektów w Sterownikach oraz Polecenia Static Driver Verifier (MSBuild).