- Come funzionano le flag del registro di configurazione -
 
COSA SERVE PER QUESTO TUTORIAL
Chiedi sul FORUM | Glossario l'editor del Registro di Sistema
Come interpretare e impostare il valore delle flag

IL FUNZIONAMENTO DELLE FLAGS
Esempi pratici e teorici.

1) Se volessimo salvare due informazioni di qualunque genere utilizzando due numeri (quindi due valori differenti del registro di configurazione), che chiameremo X e Y, potremmo, ad esempio,  impostare X su 0 quando la macchina è spenta e su 1 quando è accesa; alla stessa maniera potremmo impostare Y su 0 quando la radio è spenta e su 1 quando è accesa. Ma come potremmo fare a impostare in un solo numero queste due impostazioni? Immaginiamo di avere solamente la X questa volta, basterebbe attribuire allo stato del motore della macchina un numero, in questo caso utilizzeremo 1, e allo stato della radio un altro, facciamo 2. Proviamo a combinarli.

Stato motore Valore per lo stato del motore Stato radio Valore per lo stato della radio Corrispondente valore della X
Acceso 1 Acceso 2 3
Spento 0 Acceso 2 2
Acceso 1 Spento 0 1
Spento 0 Spento 0 0

2) Come avrete notato alla X corrisponde la somma del valore dello stato del motore e del valore per lo stato della radio.
Possiamo quindi, osservando i valori della X, dedurre che se la X è 3 (1+2) significa che sia il motore, sia la radio sono accesi; se X è 2 (0+2) significa che solamente la radio è accesa; se X è 1 (1+0) significa che solo il motore è acceso e infine se X è 0 né il motore, né la radio sono accesi. Stessa cosa vale per un'impostazione del registro di configurazione.
Ecco un altro esempio. Estendiamo il precedente aggiungendo lo stato del finestrino.

Stato motore Valore per lo stato del motore Stato radio Valore per lo stato della radio Stato finestrino Valore per lo stato del finestrino Corrispondente valore della X
Acceso 1 Acceso 2 Aperto 3 6
Spento 0 Acceso 2 Aperto 3 5
Acceso 1 Spento 0 Aperto 3 4
Spento 0 Spento 0 Aperto 3 3
Acceso 1 Acceso 2 Chiuso 0 3
Spento 0 Acceso 2 Chiuso 0 2
Acceso 1 Spento 0 Chiuso 0 1
Spento 0 Spento 0 Chiuso 0 0

3) Analizziamo valore per valore la X.

  • X=1+2+3=6: nessun problema, il motore e la radio sono accesi e il finestrino è aperto.
  • X=0+2+3=5: tutto a posto, motore spento, radio accesa e finestrino aperto.
  • X=1+0+3=4: motore accesso, radio spenta, finestrino aperto.
  • X=1+2+0=3 e X=0+0+3=3: qui sorge il problema; come avrete notato nel primo caso il motore e la radio sono accesi ma il finestrino è chiuso mentre nel secondo motore e radio sono spenti e il finestrino è aperto. Nonostante questa differenza entrambe le somme danno 3. Come mai? L'errore sta nell'aver impostato il valore per lo stato del finestrino positivo (cioè il valore che indica che il finestrino è aperto) su 3. Per evitare questi tipi di errori è necessario dare dei valori di stato che siano una potenza del 2 (2, 4, 8, 16...).

Ricompiliamo la tabella sostituendo al 3 il 4.

Stato motore Valore per lo stato del motore (20) Stato radio Valore per lo stato della radio (21) Stato finestrino Valore per lo stato del finestrino (22) Corrispondente valore della X
Acceso 1 Acceso 2 Aperto 4 7
Spento 0 Acceso 2 Aperto 4 6
Acceso 1 Spento 0 Aperto 4 5
Spento 0 Spento 0 Aperto 4 4
Acceso 1 Acceso 2 Chiuso 0 3
Spento 0 Acceso 2 Chiuso 0 2
Acceso 1 Spento 0 Chiuso 0 1
Spento 0 Spento 0 Chiuso 0 0

3) Ora passiamo a esaminare una voce del registro che contiene delle Flags.
Aprite Regedit e andate alla chiave HKEY_CURRENT_USER\Control Panel\Accessibility\TimeOut alla voce Flags. Essa contiene alcune impostazioni relative ad Accesso Facilitato. Applichiamo la nostra solita tabella, dove A se è 1 significa che "dopo aver aspettato i millisecondi specificati in TimeToWait (situato nella stessa chiave) a partire dall'ultimo utilizzo di una funzione di Accesso Facilitato disattivane tutte le funzionalità" e se B è 2 significa che "si deve emettere un segnale acustico quando si attiva o disattiva una funzionalità di Accesso Facilitato".

Valore per A Valore per B Corrispondente valore della X
1 2 3
0 2 2
1 0 1
0 0 0

 

<< INDIETRO by VeNoM00