C # -Befehl, um den Struktur-Offset zu erhalten?

7

Angenommen, ich habe eine C # -Struktur wie folgt:

%Vor%

Nun nehme ich an, dass ich Daten aus einer Datei einlese:

%Vor%

Nun möchte ich n testen, um sicherzustellen, dass ich genügend Bytes gelesen habe, um den Wert von e_lfanew zu erhalten. Gibt es eine Möglichkeit, den Wert 60 (das FieldOffset) zu bekommen, ohne es neu zu tippen? Ich bin auf der Suche nach so etwas:

%Vor%

Gibt es einen solchen Befehl? In meinem tatsächlichen Code muss ich einige dieser Tests machen, und es erscheint mühsam und fehleranfällig, die Zahlen manuell einzugeben, entweder durch Addieren der vorherigen Felder in der Struktur oder durch Kopieren von Werten aus den FieldOffset-Attributen. Gibt es einen besseren Weg?

    
Paul A Jungwirth 22.01.2010, 20:44
quelle

3 Antworten

17

Verwenden Sie Marshal.OffsetOf:

%Vor%     
wj32 22.01.2010, 20:52
quelle
6

Nun, Sie haben bereits eine magische Zahl in der Strukturdeklaration verwendet. Könnte auch Folgendes tun:

%Vor%     
Hans Passant 22.01.2010 20:51
quelle
6

Ja, Sie können dies mithilfe von Reflektion tun.

%Vor%

Sie können dies sogar zu einer netten Methode machen:

%Vor%

Verwendung:

%Vor%     
jason 22.01.2010 20:49
quelle

Tags und Links