Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per iniziare, trovare il pin pertinente. In un caso ipotetico, il pin di acquisizione video pertinente ha indirizzo 8160DDE0, quindi usiamo il comando !ks.dump estensione su questo indirizzo per ottenere altri dettagli:
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
Determinare prima di tutto se il pin è nello stato appropriato e se il mutex di elaborazione viene mantenuto da un altro thread. In questo caso, lo stato del pin è KSSTATE_RUN, come dovrebbe essere e il mutex di elaborazione non viene mantenuto, quindi si userà quindi l'estensione!ks.dumpqueue per determinare se sono disponibili fotogrammi:
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>...
Nella visualizzazione parziale precedente dell'output !ks.dumpqueue, si noterà che sono presenti cinque fotogrammi in attesa o già disponibili. Questi fotogrammi sono davanti o dietro il bordo iniziale? Nella visualizzazione !ks.dumpqueue, i frame vengono sempre elencati dal più vecchio al più nuovo. L'intestazione del frame del bordo anteriore corrisponde a quella del primo frame elencato, ovvero il frame più vecchio. Pertanto, tutti i fotogrammi disponibili sono davanti al bordo iniziale.
Se questo non fosse il caso, e invece tutti i fotogrammi fossero dietro il bordo di attacco, e avessero un conteggio di riferimento dovuto a puntatori clonati, i problemi più probabilmente hanno origine dall'hardware o dalla programmazione del driver hardware. Assicurarsi che l'hardware segnali i completamenti del buffer (controlli interrupt e DPC) e determinare che il driver risponde in modo appropriato a tali notifiche (eliminando cloni al completamento del buffer, ad esempio).
Se, come nel nostro esempio, tutti i fotogrammi sono davanti al margine anteriore, il problema è quasi certamente legato al software. Per ottenere ulteriori informazioni, consultare la porta AND del pin.
interpretare il cancello e
L'And gate del pin controlla l'elaborazione. Se il numero di gate è uno, l'elaborazione può avvenire. Ottenere lo stato corrente della porta AND usando l'estensione !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
Perché il conteggio dei cancelli è uno, il cancello E è aperto. In questo caso, esaminare le possibili cause seguenti per il blocco di elaborazione:
L'invio del processo ha restituito in modo non corretto STATUS_PENDING.
Nel caso di disponibilità dei dati manca una chiamata KsPinAttemptProcessing.