pinvoke struct ist 2 byte greosser als original

07/10/2008 - 20:45 von Ken Snyder | Report spam
hi ng.

ich habe hier einen struct aus c uebersetzt der
eigentlich so stimmen sollte, aber die pinvoke
variante is 2 byte grosser nur warum? irgendwas
habe ich zu "lang" genommen:

typedef struct _SP_DRVINFO_DATA_V2_W {
DWORD cbSize;
DWORD DriverType;
ULONG_PTR Reserved;
WCHAR Description[LINE_LEN]; //LINE_LEN = 256
WCHAR MfgName[LINE_LEN];
WCHAR ProviderName[LINE_LEN];
FILETIME DriverDate;
DWORDLONG DriverVersion;
} SP_DRVINFO_DATA_V2_W


[StructLayout(LayoutKind.Sequential, Pack=4, CharSet =
CharSet.Unicode)]
public class SP_DRVINFO_DATA
{
public System.UInt32 cbSize;
public System.UInt32 DriverType;
public System.UIntPtr Reserved;

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public System.String Description;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public System.String MfgName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public System.String ProviderName;
public System.Runtime.InteropServices.ComTypes.FILETIME
DriverDate;
public System.UInt64 DriverVersion;
}

das "sollte" eigentlich stimmen.

danke fuer jeden tip

ken
 

Lesen sie die antworten

#1 Frank Dzaebel
08/10/2008 - 07:36 | Warnen spam
Hallo Ken,

ich habe hier einen struct aus c uebersetzt der
eigentlich so stimmen sollte, aber die pinvoke
variante is 2 byte grosser nur warum?



Müsste 1564 herauskommen.
Beachte, dass UIntPtr ein plattformspezifischer
Typ ist.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen