Implementieren von IOCTLs für einen SAN-Dienstanbieter

Wenn ein SAN-Dienstanbieter IOCTL-Anforderungen (E/A-Steuerung) an den Proxytreiber sendet, sollte der Treiber eine IRP_MJ_DEVICE_CONTROL Dispatchroutine implementieren, um diese Anforderungen zu verarbeiten. Eine IOCTL-Anforderung kann z. B. eine Anforderung zum Abrufen der Liste der IP-Adressen sein, die den NiCs des Treibers zugewiesen sind, oder eine Anforderung zum Zuweisen oder Freigeben von Arbeitsspeicher. Die DriverEntry-Routine muss einen Einstiegspunkt für die Dispatchroutine angeben.

Die Gerätesteuerungsroutine des Proxytreibers ruft die IoGetCurrentIrpStackLocation-Funktion auf, in der die Gerätesteuerungsroutine einen Zeiger auf den IRP übergibt, der an die Routine übergeben wurde. Die Gerätesteuerungsroutine bestimmt dann, welche IOCTL-Anforderung empfangen wurde und verarbeitet die Anforderung entsprechend.

Nach Abschluss der aktuellen IOCTL-Anforderung ruft die Gerätesteuerungsroutine die IoCompleteRequest-Funktion auf und übergibt die status des Vorgangs. Diese status wird an den SAN-Dienstanbieter zurückgegeben.