Condividi tramite


DF - Test di apertura e chiusura fuzz (affidabilità)

Questo test esegue migliaia di sequenze create-open-close e usa diversi modi per aprire e chiudere istanze del dispositivo o dei dispositivi specificati: operazioni di apertura di base, operazioni di apertura diretta del dispositivo e un test di stress Open e Close.

Operazioni aperte di base

Durante le operazioni di apertura di base, il test Fuzz apre ripetutamente (crea) istanze dei dispositivi specificati o dei dispositivi esportati dal driver specificato usando metodi e opzioni diversi.

Il test Fuzz esegue sempre le operazioni di apertura di base. Non è necessario selezionarli e non è possibile escluderli da una sessione di test.

Il test Fuzz esegue tutte le operazioni aperte in modalità utente chiamando i servizi di sistema (Routine ZwXxx) appropriati per il dispositivo. Se una chiamata aperta restituisce un handle al dispositivo, il test Fuzz usa l'handle per eseguire gli altri test del dispositivo selezionati per la sessione di test.

Esistono cinque tipi di operazioni aperte di base:

  • Apertura standard: il test Fuzz apre il dispositivo in modo asincrono e specifica solo il nome del dispositivo nativo.

  • Apri con la barra rovesciata aggiunta: il test Fuzz genera una chiamata aperta per il nome del dispositivo seguito da una barra rovesciata (), ad esempio \device\cdrom\, come se la chiamata fosse per aprire una directory radice all'interno del dispositivo.

    Questa operazione determina il modo in cui il driver o il file system gestisce le richieste aperte nello spazio dei nomi. In particolare, se il dispositivo non supporta le richieste aperte nello spazio dei nomi, il driver deve impedire l'accesso non autorizzato, con esito negativo delle richieste o impostando la caratteristica del dispositivo FILE_DEVICE_SECURE_OPEN quando chiama IoCreateDevice o IoCreateDeviceSecure per creare l'oggetto dispositivo.

  • Aprire come named pipe: il test Fuzz apre il dispositivo e stabilisce una named pipe al dispositivo. Il parametro di accesso (ShareAccess) viene inizialmente impostato su lettura e scrittura, ma viene modificato se la richiesta non riesce. Se il dispositivo non supporta named pipe, la richiesta avrà esito negativo.

  • Apri come mailslot: il test Fuzz apre il dispositivo come mailslot. Se il dispositivo non supporta questo tipo di connessione, la richiesta non riesce.

  • Apri come connessione ad albero: il test Fuzz apre il dispositivo come connessione ad albero da usare nell'accesso alla rete remota. Il parametro di accesso (ShareAccess) viene inizialmente impostato su lettura e scrittura, ma viene modificato se la richiesta non riesce. Se il dispositivo non supporta questo tipo di connessione, la richiesta non riesce.

I parametri usati nelle chiamate aperte variano in base alle caratteristiche del dispositivo e rendono probabile che le chiamate abbiano esito positivo. Ad esempio, se un'operazione di apertura di base non riesce perché la chiamata non soddisfa i requisiti di sicurezza del dispositivo, il test Fuzz ripete l'operazione di apertura con una richiesta di accesso minore. Ad esempio, se un'operazione aperta che ha richiesto l'accesso in scrittura restituisce un errore di violazione di sicurezza, l'apertura viene ripetuta con una richiesta di accesso in lettura.

Operazioni di apertura diretta del dispositivo

Durante le operazioni di apertura diretta del dispositivo, il test Fuzz apre direttamente il dispositivo, come dispositivo, non come file in un file system. Le operazioni direct device open sono sempre sincrone. Se la chiamata ha esito positivo, il test Fuzz usa l'handle fornito per eseguire altri test selezionati.

Aprire e chiudere il test

Durante il test Open e Close, il test Fuzz crea diversi thread, ognuno dei quali esegue migliaia di sequenze create-open-close. Questo verifica la capacità del conducente di gestire un volume straordinario di chiamate altrimenti semplici e previste.

Il test Apri e Chiudi usa le stesse opzioni usate in Operazione di apertura di base e Apri con i test della barra rovesciata aggiunta e vengono eseguiti subito prima di questi test.

File binario di test: Devfund_FuzzTest.dll metodo Test: DoOpenCloseTest

Dettagli del test

   
Specifiche
  • Device.DevFund.Reliability.BasicReliabilityAndPerformance
  • Device.DevFund.Reliability.BasicSecurity
  • Device.DevFund.DriverFramework.KMDF.Reliability
  • Device.DevFund.DriverFramework.UMDF.Reliability
Piattaforme
  • Windows 10, edizioni client (x86)
  • Windows 10, edizioni client (x64)
  • Windows Server 2016 (x64)
  • Windows 10, edizioni client (Arm64)
  • Windows 10, mobile edition (Arm)
  • Windows 10, mobile edition (Arm64)
Versioni supportate
  • Windows 10
  • Windows 10 versione 1511
  • Windows 10 versione 1607
  • Windows 10 versione 1703
  • Windows 10, versione 1709
  • Windows 10, versione 1803
  • Windows 10, versione 1809
  • Windows 10, versione 1903
  • Eseguire quindi l'aggiornamento a Windows 10
Tempo di esecuzione previsto (in minuti) 15
Categoria Scenario
Timeout (in minuti) 180
Richiede il riavvio false
Richiede una configurazione speciale true
Tipo automatic

 

Documentazione aggiuntiva

I test in questa area di funzionalità potrebbero avere documentazione aggiuntiva, inclusi i prerequisiti, la configurazione e le informazioni sulla risoluzione dei problemi, disponibili negli argomenti seguenti:

Esecuzione del test

Prima di eseguire il test, completare l'installazione dei test come descritto nei requisiti di test: Prerequisiti di test dell'affidabilità Device.Fundamentals.

Risoluzione dei problemi relativi

Per la risoluzione generica degli errori di test HLK, vedere Risoluzione dei problemi di test di Windows HLK.

Per informazioni sulla risoluzione dei problemi specifiche dei test dei concetti fondamentali del dispositivo in HLK e WDK, vedere la documentazione aggiuntiva di Device.DevFund.

Altre informazioni

Parametri

Nome parametro Descrizione dei parametri
DQ Query SDEL WDTF usata per identificare i dispositivi di destinazione: https://go.microsoft.com/fwlink/?LinkId=232678
Wpa2PskAesSsid Obbligatorio SOLO se DUT o uno dei relativi dispositivi figlio è una scheda Wi-Fi. Specificare SSID di una rete Wi-Fi WPA2 AES che il test può usare per testare la scheda Wi-Fi. Il valore predefinito è "kitstestssid".
Wpa2PskPassword Obbligatorio SOLO se DUT o uno dei relativi dispositivi figlio è una scheda Wi-Fi. Specificare la password della rete Wi-Fi WPA2 AES specificata usando il parametro Wpa2PskAesSsid. Il valore predefinito è "password".
ChangeBufferProtectionFlags Vero o Falso. Modifica i flag di protezione della memoria dei buffer passati al dispositivo testato. I flag di protezione della memoria si alternano tra nessun accesso, di sola lettura e di sola lettura con protezione della pagina.
Impersonate Vero o Falso. Esegue il test come utente non amministrativo.
FillZeroPageWithNull Vero o Falso. Esegue il mapping della pagina zero e lo riempie con valori NULL. Questo test identifica i driver che non verificano un riferimento puntatore prima di dereferenziare un puntatore.
DoPoolCheck Vero o Falso. Monitora l'uso del driver dei pool di memoria di sistema di paging e non di paging usando tag del pool e elenchi lookaside. Questa opzione monitora anche le modifiche apportate al numero di eccezioni gestite che potrebbero indicare errori nella gestione delle eccezioni.
DoSync Vero o Falso. Apre anche gli handle di dispositivo in modalità SYNC (FILE_SYNCHRONOUS_IO_ALERT). Le operazioni di lettura e scrittura casuali vengono ignorate.
TestCycles Numero di cicli di test.
DriverVerifierAdditionalDrivers Driver aggiuntivi con Driver Verifier abilitato
DriverVerifierExcludedFlags Segnaposto per i flag di verifica driver che possono essere esclusi manualmente per l'esecuzione del test
WDKDeviceID ID dispositivo sottoposto a test
QueryHardwareID ID hardware del dispositivo sottoposto a test
WDTFREMOTESYSTEM Obbligatorio SOLO se DUT o uno dei relativi dispositivi figlio è una scheda di interfaccia di rete cablata che non ha un indirizzo gateway IPv6. Se è necessario, specificare un indirizzo IPv6 che la scheda di interfaccia di rete di test può effettuare il ping per testare l'I/O di rete. Ad esempio: fe80::78b6:810:9c12:46cd
DriverVerifierCustomizeConfiguration Specifica che questo test potrebbe voler aggiornare automaticamente le impostazioni di Driver Verifier