Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Microsoft Source Code Annotation Language (SAL) include annotazioni specifiche per l'analisi dei driver di Windows e del codice kernel correlato. Il linguaggio di annotazione consente di descrivere le proprietà di funzioni, parametri, valori restituiti, strutture e campi struttura. Le annotazioni sono simili ai commenti che si aggiungono al codice e vengono ignorate dal compilatore, ma vengono usate dagli strumenti di analisi statica. L'uso di annotazioni consente di migliorare l'efficacia dello sviluppatore, migliora l'accuratezza dei risultati dell'analisi statica e consente agli strumenti di determinare meglio se esiste un particolare bug. Le annotazioni del driver non sono destinate all'uso in codice non relativo al driver o non correlato al kernel. Le annotazioni del driver sono definite in Driverspecs.h.
Nota Windows 8 introduce SAL 2.0, che sostituisce SAL 1.0. Per informazioni su SAL 2.0, vedere Uso delle annotazioni SAL per ridurre i difetti del codice C/C++. SAL 2.0 sostituisce SAL 1.0. SAL 2.0 deve essere usato con Windows Driver Kit (WDK) 8 per Windows 8. Per informazioni su SAL 1.0 per i driver, vedere la documentazione fornita con WDK per Windows 7.
Annotazioni IRQL
Usare le annotazioni IRQL per specificare l'intervallo di livelli IRQL in cui deve essere eseguita una funzione. Le annotazioni IRQL consentono allo strumento di analisi del codice di individuare in modo più accurato gli errori.
_IRQL_requires_max_(value)
_IRQL_requires_min_(value)
_IRQL_raises_(value)
_IRQL_requires_(value)
_IRQL_raises_(value)
_IRQL_saves_
_IRQL_restores_
_IRQL_saves_global_(kind, param)
_IRQL_restores_global_(kind, param)
_IRQL_always_function_min_(value)
_IRQL_always_function_max_(value)
_IRQL_requires_same_
_IRQL_is_cancel_ - Usare l'annotazione _IRQL_is_cancel per garantire il comportamento corretto di una funzione di callback DRIVER_CANCEL.
Annotazioni a virgola mobile per i driver
_Kernel_float_saved_
_Kernel_float_restored_
_Kernel_float_used_
Usare le annotazioni a virgola mobile per i driver per permettere allo strumento di analisi del codice di rilevare l'uso di numeri a virgola mobile nel codice in modalità kernel e segnalare eventuali errori se lo stato a virgola mobile non è protetto correttamente.
DO_DEVICE_INITIALIZING annotazione
_Kernel_clear_do_init_
Usare l'annotazione DO_DEVICE_INITIALIZING per specificare se la funzione annotata deve cancellare il bit DO_DEVICE_INITIALIZING nel campo Flag dell'oggetto dispositivo.
annotazione Kernel_IoGetDmaAdapter
_Kernel_IoGetDmaAdapter_
Usare l'annotazione Kernel_IoGetDmaAdapter per indirizzare gli strumenti di analisi del codice a cercare l'uso improprio dei puntatori DMA.
Annotazioni per gli operandi interbloccati
_Interlocked_operand_
Usare le annotazioni per gli operandi interbloccati per i parametri di funzione per identificarli come operandi interbloccati. Una serie di funzioni accetta come uno dei suoi parametri l'indirizzo di una variabile a cui accedere usando un'istruzione interlocked del processore. Si tratta di istruzioni atomiche di lettura nella cache e, se gli operandi vengono usati in modo errato, si verificano bug molto sottili.
Annotazioni per le routine di invio del driver
_Dispatch_type_
Usare le annotazioni per le routine dispatch del driver quando si dichiarano routine di invio del driver WDM. Per altre informazioni, vedere Dichiarare funzioni utilizzando tipi di ruolo di funzione per i driver WDM e Annotare le routine di dispatch dei driver.
Callback pre-operazione di File System Minifilter con annotazione _Flt_CompletionContext_Outptr_
_Flt_CompletionContext_Outptr_
Usare l'annotazione _Flt_CompletionContext_Outptr_ per il callback pre-operazione del minifiltro del file system quando si dichiarano le funzioni PFLT_PRE_OPERATION_CALLBACK di callback pre-operazione del minifiltro del file system.
Inserire questa annotazione nel parametro CompletionContext. Questa annotazione indirizza lo strumento di analisi del codice a verificare che CompletionContext sia corretto per il valore restituito FLT_PREOP_CALLBACK_STATUS.
Vedere anche
Uso delle annotazioni SAL per ridurre gli errori del codice C/C++