IOCTL_SCSI_MINIPORT_NVCACHE IOCTL (ntddscsi.h)
Die hier definierten NV-Cacheverwaltungsvorgänge können vom Benutzermodusanwendungscode mit Administratorrechten mithilfe von DeviceIoControl und dem IOCTL_SCSI_MINIPORT-Steuerungscode aufgerufen werden. Oder der Aufrufer kann Kernelmodustreibercode mithilfe von IoBuildDeviceIoControlRequest und dem IOCTL_SCSI_MINIPORT-Steuerelementcode sein.
Die Nv Cache Management-Funktionsanforderung wird in einem Feld in der NVCACHE_REQUEST_BLOCK-Struktur angegeben. Die Eingabe für IOCTL_SCSI_MINIPORT ist eine benutzerdefinierte Datenstruktur, die eine SRB_IO_CONTROL-Struktur gefolgt von einer NVCACHE_REQUEST_BLOCK-Struktur enthält. Zusätzliche funktionsspezifische Daten können optional der NVCACHE_REQUEST_BLOCK-Struktur folgen.
Die Schnittstelle, die für die NV-Cacheverwaltungsfunktion verwendet wird, besteht aus zwei Ebenen. Die erste Ebene ist die Schnittstelle zwischen einem Aufrufer und dem Porttreiber, die durch IOCTL_SCSI_MINIPORT definiert wird. Die zweite Ebene ist die Schnittstelle zwischen dem Aufrufer und dem Gerät, die durch die ATA8-ACS-Spezifikation und IOCTL_SCSI_MINIPORT_NVCACHE definiert wird. Die API für Anwendungscode im Benutzermodus ist die DeviceIoControl-Schnittstelle. Die API für Kernelmodustreibercode ist die IoBuildDeviceIoControlRequest-Schnittstelle , die IOCTL_SCSI_MINIPORT verwendet.
Hauptcode
Eingabepuffer
Der Puffer bei Irp-AssociatedIrp.SystemBuffer> enthält eine SRB_IO_CONTROL-Struktur, wobei das Feld Signature auf "HYBRDISK" und das ControlCode-Feld auf IOCTL_SCSI_MINIPORT_NVCACHE festgelegt ist. Die NVCACHE_REQUEST_BLOCK-Struktur folgt sofort der SRB_IO_CONTROL-Struktur . Jeder optionale funktionsspezifische Datenpuffer folgt sofort der NVCACHE_REQUEST_BLOCK-Struktur .
Eingabepufferlänge
Parameters.DeviceIoControl.InputBufferLength gibt die Größe aller Eingabedaten in Bytes an: SRB_IO_CONTROL, NVCACHE_REQUEST_BLOCK und funktionsspezifischer Datenpuffer kombiniert. Das Vorhandensein oder Fehlen eines Datenpuffers wird durch das Feld NVCACHE_REQUEST_BLOCK****DataBufSize angezeigt.
Ausgabepuffer
Aktualisierte SRB_IO_CONTROLSRB_IO_CONTROL**]() und NVCACHE_REQUEST_BLOCK Strukturen sowie der optionale funktionsspezifische Datenpuffer werden unter Irp-AssociatedIrp.SystemBuffer> an den Puffer zurückgegeben.
Länge des Ausgabepuffers
Die Länge des Puffers.
Statusblock
Das Feld Information enthält die Anzahl der im Ausgabepuffer zurückgegebenen Bytes. Das Feld Status gibt die Ergebnisse des Vorgangs an.
Anforderungen
Anforderung | Wert |
---|---|
Header | ntddscsi.h (include Ntddscsi.h) |