2
我被传下来了一个库,作为BITS的包装开发。有人告诉我,如果你想改变64位和32位版本,你需要换掉这两条注释行。P/Invoke声明看起来不正确
[StructLayout(LayoutKind.Explicit, Size = 8, Pack = 4)] //32 bit address
internal struct BG_BASIC_CREDENTIALS
{
[FieldOffset(0)]
[MarshalAs(UnmanagedType.LPWStr)]
public string UserName;
[FieldOffset(4)]
[MarshalAs(UnmanagedType.LPWStr)]
public string Password;
}
//[StructLayout(LayoutKind.Explicit, Size = 16, Pack = 8)] //64 bit address
//internal struct BG_BASIC_CREDENTIALS
//{
// [FieldOffset(0)]
// [MarshalAs(UnmanagedType.LPWStr)]
// public string UserName;
// [FieldOffset(8)]
// [MarshalAs(UnmanagedType.LPWStr)]
// public string Password;
//}
这只是不跟我正确的坐,是谁我得到这个从做正确的事情(这个代码使用的是交换意见伎俩部署在32位和64的机器,所以我知道它的工作原理)的人。如果这是需要做的事情,有什么办法可以做到这一点,所以每次创建32或64位版本时都不需要手动调整评论。 (还是有办法让这个dll目标CPU全兼容)
Link to the MSDN of the datatype
我还添加了这对[pinvoke.net](http://pinvoke.net/default.aspx/Structures/BG_BASIC_CREDENTIALS.html |) – 2010-10-05 08:16:51