Zitat Zitat von Holomino Beitrag anzeigen
- Da finde ich die Zuweisung nicht.
Code:
KeyWords[0] = 0x00;
KeyWords[1] = 0x81;

outputMsg.NumOfBytes = 2;
outputMsg.BytePtr = &KeyWords[0];
Oder was vermisst Du genau?

Zitat Zitat von Holomino Beitrag anzeigen
Und es ist auch (zumindest in C, soweit ich weiß) keine gute Idee, ein Array in der Unterfunktion zu definieren. Das Array wird auf dem Stack angelegt und ist damit spätestens nach dem nächsten Aufruf einer weiteren Unterfunktion potentiell wech.
Und das ist genau das gewünschte Verhalten...

Dadurch, dass diese Funktion mit unterschiedlichen Parameter aufgerufen, bei den pInput und pOutput (mal mit NULL, mal mit unsigned long, mal mit Arrays unterschiedlicher Art), sind die beiden als void* definiert.

Der Aufrufer gibt die Referenz rein und alles ist gut. In der Spec sind die Parameter auch definiert, das hängt davon ab, was als IoctlID reingegeben wird. Die Daten in dieser Funktion werden nicht "persistiert", sondern (im Normalfall) von woanders geholt (aus der Diagnosehardare) und nur durchgereicht.