typedef struct _SP_DEVINFO_DATA {
DWORD cbSize;
GUID ClassGuid;
DWORD DevInst;
ULONG_PTR Reserved;
} SP_DEVINFO_DATA, *PSP_DEVINFO_DATA;
在vc中sizeof取得结构的大小是28。转换到c#中
[StructLayout(LayoutKind.Sequential)]
public class SP_DEVINFO_DATA
{
public UInt32 cbSize;
public Guid ClassGuid;
public UInt32 DevInst;
public ulong Reserved;
};
SP_DEVINFO_DATA spData = new SP_DEVINFO_DATA();
spData.cbSize = (UInt32)System.Runtime.InteropServices.Marshal.SizeOf(spData);大小为什么变成了32?
DWORD cbSize;
GUID ClassGuid;
DWORD DevInst;
ULONG_PTR Reserved;
} SP_DEVINFO_DATA, *PSP_DEVINFO_DATA;
在vc中sizeof取得结构的大小是28。转换到c#中
[StructLayout(LayoutKind.Sequential)]
public class SP_DEVINFO_DATA
{
public UInt32 cbSize;
public Guid ClassGuid;
public UInt32 DevInst;
public ulong Reserved;
};
SP_DEVINFO_DATA spData = new SP_DEVINFO_DATA();
spData.cbSize = (UInt32)System.Runtime.InteropServices.Marshal.SizeOf(spData);大小为什么变成了32?
解决方案 »
- 求好的查询等待图标 我没有积分了 不过资源分有呢
- 急,在线等,求一段sql语句
- socket编程中结构体与字节流转换出现的问题
- 写了一个socket服务端,捕获不到的异常
- 问一个打开对话框的问题!!!
- 谁用过MSN?如何杀MSN小尾巴病毒?
- 新人求助:C#中如何调用emgucv的Canny方法?
- WinForm内treeView的右键焦点问题,是.NET的bug吗?
- 怎样将原有的datatable中特定的某一行的某几个字段的值改写,且这一行在表中的位置不变?
- TextBox的显示格式,比如我想在BOX中加入一个“¥”符号,想让用户输入的所有数字都自动跟随到“¥”后面
- 怎样把.net生成的资源文件夹统一放在某一个文件夹
- 这是表示什么意思 Kes.Up|Keys.Shift?
ULONG_PTR是4个字节
所以上面的结构多了4个字节
32-4=28[StructLayout(LayoutKind.Sequential)]
public class SP_DEVINFO_DATA
{
public UInt32 cbSize;
public Guid ClassGuid;
public UInt32 DevInst;
public IntPtr Reserved; //<<<<<<<
};
spData.cbSize = (UInt32)System.Runtime.InteropServices.Marshal.SizeOf(spData);NewDeviceInfoSet = SetupDiGetClassDevs(0, "PCI", IntPtr.Zero, DIGCF_PRESENT | DIGCF_ALLCLASSES); SetupDiEnumDeviceInfo(NewDeviceInfoSet, RequiredSize, ref spData);为什么这条语句执行没有成功??GetLastError返回ERROR_INVALID_USER_BUFFER,为什么,哪用错了吗?
http://www.pinvoke.net/default.aspx/setupapi/SetupDiEnumDeviceInfo.html