Udostępnij przez


Zestaw reguł użycia DDI (NDIS)

Użyj tych reguł, aby sprawdzić, czy sterownik prawidłowo używa interfejsów DDI NDIS.

W tym dziale

Temat Opis

Init_DeRegisterInterrupt

Reguła Init_DeRegisterInterrupt określa, że jeśli NdisMRegisterInterruptEx jest wywoływany co najmniej raz podczas MPInitialize, NdisMDeregisterInterruptEx powinien być wywoływany co najmniej raz w MPHaltEx.

Init_NdisAllocateIoWorkItem

Reguła Init_NdisAllocateIoWorkItem określa, że jeśli NdisAllocateIoWorkItem jest wywoływany co najmniej raz podczas miniportInitializeEx, funkcja NdisFreeIoWorkItem powinna:

Init_RegisterInterrupt

Reguła Init_RegisterInterrupt określa, że rejestracja przerwań, które zwykle mają miejsce podczas inicjowania, powinna zostać cofnięta, jeśli wystąpi problem w procesie inicjowania lub podczas zatrzymywania sterownika miniportu.

Jeśli funkcja NdisMRegisterInterruptEx jest wywoływana co najmniej raz podczas miniportInitializeEx, funkcja NdisMDeregisterInterruptEx musi być wywoływana co najmniej raz w programie MiniportHaltEx.

Init_RegisterSG

Reguła Init_RegisterSG określa, że rejestracja listy rozdzielczo-zbierającej (SG), która zwykle ma miejsce podczas inicjowania, musi zostać cofnięta, jeśli coś pójdzie nie tak w procesie inicjowania lub podczas zatrzymywania sterownika miniportowego.

Jeśli funkcja NdisMRegisterScatterGatherDma jest wywoływana co najmniej raz podczas miniportInitializeEx, funkcja NdisMDeregisterScatterGatherDma powinna być wywoływana co najmniej raz w miniportHaltEx.

NdisFDeregisterFilterDriver

Sterownik filtru musi wywołać metodę NdisFDeregisterFilterDriver z procedury FilterDriverUnload .

NdisMDeregisterInterruptEx

Po powrocie kontrolki NdisMDeregisterInterruptEx sterownik miniportu nie może wywołać funkcji NdisMSynchronizeWithInterruptEx .

NullCheck

Reguła NullCheck weryfikuje, czy wartość NULL wewnątrz kodu sterownika nie zostanie później wyłuszona w sterowniku. Ta reguła zgłasza usterkę, jeśli jeden z tych warunków jest spełniony:

  • Występuje przypisanie wartości NULL, która zostanie później dereferencjonowana.
  • Istnieje globalny parametr/procedura w sterowniku, który może mieć wartość NULL i jest później wyłuskiwany, a w sterowniku znajduje się jawne sprawdzenie sugerujące, że początkowa wartość wskaźnika może być równa NULL.

W przypadku naruszeń reguły NullCheck najistotniejsze instrukcje kodu są wyróżnione w panelu drzewa śledzenia. Aby uzyskać więcej informacji na temat pracy z danymi wyjściowymi raportu, zobacz Statyczny raport weryfikatora sterowników i Omówienie przeglądarki śledzenia.

Aby wybrać zestaw reguł użycia DDI

  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ę DDIUsage.

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

    msbuild /t:sdv /p:Inputs="/check:DDIUsage.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).