Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Börja med att hitta den relevanta pin-koden. I ett hypotetiskt fall har den relevanta pin-koden för videoinspelning adress 8160DDE0, så vi använder kommandot !ks.dump-tillägget på den här adressen för att få mer information:
kd> !ks.dump 8160DDE0 7
Pin object 8160DDE0 [CKsPin = 8160DD50]
DeviceState KSSTATE_RUN
ClientState KSSTATE_RUN
CKsPin object 8160DD50 [KSPIN = 8160DDE0]
State KSSTATE_RUN
Processing Mutex 8160DFD0 is not held
And Gate & 8160DF88
And Gate Count 1
Kontrollera först om stiftet är i rätt tillstånd och om en annan tråd håller mutexen. I det här fallet är pin-tillståndet KSSTATE_RUN, som det ska vara, och mutex-bearbetningen hålls inte, så vi använder !ks.dumpqueue tillägg för att avgöra om det finns tillgängliga bildrutor:
kd> !ks.dumpqueue 8160DDE0 7
Queue 8172D5D8:
Frames Received : 763
Frames Waiting : 5
...<this part of display not shown>...
Queue 8172D5D8:
Frame Header 81B77E60:
Irp = 816EE008
Refcount = 1
Frame Header 81A568D0:
Irp = 816DE008
Refcount = 0
Frame Header 81844ED8:
Irp = FFA0F650
Refcount = 0
Frame Header 8174B0B0:
Irp = FFABB460
Refcount = 0
Leading Edge:
Stream Pointer 8183EA58 [Public 8183EA90]:
Frame Header = 81B77E60
...<this part of display not shown>...
I ovanstående partiella visning av !ks.dumpqueue utdata ser vi att det finns fem bildrutor som väntar eller är tillgängliga. Ligger dessa ramar före eller bakom framkanten? På !ks.dumpqueue visas bildrutorna alltid från äldsta till nyaste. Ramhuvudet för den främre kanten matchar den första ramen i listan, den äldsta ramen. Därför ligger alla tillgängliga bildrutor före framkanten.
Om detta inte var fallet, och istället alla ramar var bakom framkanten, och de hade en referensräkning på grund av klonpekare, härstammar problemen troligen från antingen maskinvaran eller drivrutinens programmering av maskinvara. Kontrollera att maskinvaran signalerar att bufferten har slutförts (kontrollera avbrott och DPC:er) och se till att drivrutinen svarar korrekt på dessa meddelanden (genom att ta bort kloner när bufferten har slutförts, till exempel).
Om, som i vårt exempel, alla rutor ligger före framkanten, är problemet nästan säkert ett mjukvaruproblem. Ytterligare information kan erhållas genom att titta på pin-AND-grinden.
tolka Och Gate
Pin-kodens och grinden styr bearbetningen. Om antalet portar är ett kan bearbetning ske. Hämta aktuell status för And gate med hjälp av tillägget !ks.dump:
kd> !ks.dump 8160DDE0 7
Pin object 8160DDE0 [CKsPin = 8160DD50]
DeviceState KSSTATE_RUN
ClientState KSSTATE_RUN
CKsPin object 8160DD50 [KSPIN = 8160DDE0]
State KSSTATE_RUN
Processing Mutex 8160DFD0 is not held
And Gate & 8160DF88
And Gate Count 1
Eftersom antalet portar är en, är And-grinden öppen. I det här fallet undersöker du följande potentiella orsaker till bearbetningsstoppet:
Processsändningen returnerade felaktigt STATUS_PENDING.
Datatillgänglighetsfallet saknar ett KsPinAttemptProcessing-anrop.