Suppose I have a C# struct like this:
[StructLayout(LayoutKind.Explicit)]
struct IMAGE_DOS_HEADER {
[FieldOffset(60)] public int e_lfanew;
}
Now suppose I read in data from a file, like this:
byte[] data = new byte[4096];
FileStream f = new FileInfo(filename).Open(FileMode.Open, FileAccess.Read);
int n = f.Read(data, 0, 4096);
Now I want to test n
to make sure I've read enough bytes to get the value of e_lfanew
. Is there any way I can get the value 60 (the FieldOffset) without retyping it? I'm looking for something like this:
if (n >= offsetof(IMAGE_DOS_HEADER.e_lfanew) + sizeof(int)) {
...
}
Is there any such command? In my actual code, I have to make several of these tests, and it seems tedious and error-prone to type the numbers in by hand, either by adding up the prior fields in the struct or by copying values out of the FieldOffset attributes. Is there a better way?