Benutzer mit den meisten Antworten
PIO_STACK_LOCATION

Frage
-
Hi!
Ich schreibe derzeit an meinem ersten Pnp - Treiber und orientiere mich zunächst eng am Beispiel diskperf.
Diskperf kann ich problemlos kompilieren, wenn ich die selben Einstellungen allerdings auf meinen Treiber anwenden möchte, führt das zu folgender Fehlermeldung:
error C2275: 'PIO_STACK_LOCATION' : illegal use of this type as an expression
Dabei verwende ich, was makefile und sources Datei betrifft die selben Einstellungen und nutze PIO_STACK_LOCATION auch, wie im Beispiel:
PIO_STACK_LOCATION sIrp = IoGetCurrentIrpStackLocation(Irp);
Meine Header:
#include <ntddk.h>
Ich verstehe nicht, was ich anders machen muss, damit es klappt!
Vielen Dank schon mal im Voraus
developer1800
Antworten
-
Da es sich wahrscheinlich um C-code handelt (Kernel-Treiber) kannst du Variablen nur am Anfang eines Blockes deklarieren.
Am besten ganz am Anfang der Funktion:NTSTATUS DispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
PIO_STACK_LOCATION sIrp;
// alle weiteren Variablen
DbgPrint("DispatchPnp: started...\n");Mit freundlichen Gruessen
- Bearbeitet MaybeCompletelyW Montag, 19. Dezember 2011 14:32
- Als Antwort markiert developer1800 Montag, 19. Dezember 2011 15:32
Alle Antworten
-
-
Vielen Dank für Ihre Antwort!
Die Definition steht am Anfang einer Funktion:
NTSTATUS DispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
DbgPrint("DispatchPnp: started...\n");
PIO_STACK_LOCATION sIrp = IoGetCurrentIrpStackLocation(Irp);Es ändert sich allerdings auch nichts an der Fehlermeldung, wenn man folgendes schreibt:
NTSTATUS DispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
DbgPrint("DispatchPnp: started...\n");
PIO_STACK_LOCATION sIrp;
sIrp = IoGetCurrentIrpStackLocation(Irp);MFG
developer1800
-
Da es sich wahrscheinlich um C-code handelt (Kernel-Treiber) kannst du Variablen nur am Anfang eines Blockes deklarieren.
Am besten ganz am Anfang der Funktion:NTSTATUS DispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
PIO_STACK_LOCATION sIrp;
// alle weiteren Variablen
DbgPrint("DispatchPnp: started...\n");Mit freundlichen Gruessen
- Bearbeitet MaybeCompletelyW Montag, 19. Dezember 2011 14:32
- Als Antwort markiert developer1800 Montag, 19. Dezember 2011 15:32