HW_PROCESS_SERVICE_REQUEST funzione di callback (storport.h)
La routine di callback HwStorProcessServiceRequest riceve l'IRP del controllo del dispositivo che contiene la richiesta di IOCTL_MINIPORT_PROCESS_SERVICE_IRP quando un chiamante, ad esempio un'applicazione in modalità utente o un driver in modalità kernel, richiede un'operazione di "callback inversa". L'I/O viene completato dal driver miniport quando deve indicare al chiamante di qualcosa o ha bisogno del chiamante di eseguire qualcosa.
Sintassi
HW_PROCESS_SERVICE_REQUEST HwProcessServiceRequest;
void HwProcessServiceRequest(
PVOID DeviceExtension,
PVOID Irp
)
{...}
Parametri
DeviceExtension
Puntatore all'area di archiviazione per adattatore del driver miniport virtuale.
Irp
Puntatore alla richiesta di I/O.
Valore restituito
nessuno
Osservazioni
Il nome HwStorProcessServiceRequest è il testo segnaposto per il nome di routine effettivo. Il prototipo effettivo di questa routine è definito in Storport.h come segue:
typedef
VOID
HW_PROCESS_SERVICE_REQUEST (
_In_ PVOID DeviceExtension,
_In_ PVOID Irp
);
Il driver della porta chiama la routine HwStorProcessServiceRequest del driver virtuale Storport in PASSIVE_LEVEL. Il driver miniport virtuale completa l'IRP chiamando la routine StorPortCompleteServiceIrp .
Esempio
Per definire una funzione di callback HwStorProcessServiceRequest , è prima necessario fornire una dichiarazione di funzione che identifica il tipo di funzione di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione usando i tipi di funzione callback consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.
Ad esempio, per definire una routine di callback HwStorProcessServiceRequest denominata MyHwProcessServiceRequest, usare il tipo di HW_PROCESS_SERVICE_REQUEST come illustrato in questo esempio di codice:
HW_PROCESS_SERVICE_REQUEST MyHwProcessServiceRequest;
Implementare quindi la routine di callback come indicato di seguito:
_Use_decl_annotations_
VOID
MyHwProcessServiceRequest (
_In_ PVOID DeviceExtension,
_In_ PVOID Irp
);
{
...
}
Il tipo di funzione HW_PROCESS_SERVICE_REQUEST è definito nel file di intestazione Storport.h. Per identificare in modo più accurato gli errori durante l'esecuzione degli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione Use_decl_annotations alla definizione della funzione. L'annotazione Use_decl_annotations garantisce che vengano usate le annotazioni applicate al tipo di funzione HW_PROCESS_SERVICE_REQUEST nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver Storport. Per informazioni su Use_decl_annotations, vedere Annotazione del comportamento della funzione.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | Storport.h (include Storport.h) |