這次我有一個錯誤,我一直試圖找出它爲什麼存在。雖然錯誤可以忽略,但我想知道它爲什麼存在於第一位。SetupDiGetDeviceInterfaceDetail無法解釋的錯誤
result = SetupDiGetDeviceInterfaceDetail(deviceInfoSet, ref anInterface, IntPtr.Zero, 0, ref buffersize, IntPtr.Zero);
if (!result)
{
int errCode = Marshal.GetLastWin32Error();
errorMessage = new Win32Exception(Marshal.GetLastWin32Error()).Message;
statusLabel.Text += "\n(1)SetupDiGetDeviceInterfaceDetail Error: " + errCode + " => " + errorMessage + ".";
//break;
}
這是此功能這僅僅是用於設置緩衝區大小可變用於第二呼叫的功能的目的的第一呼叫。我收到打印的錯誤消息:122 =>傳遞給系統調用的數據區域太小。 從我認爲的錯誤消息來看,這必定與第二個參數(ref anInterface)有關,並且我可以忽略第二遍結果是真的;但錯誤仍然存在,我想知道爲什麼在它回來咬我在'後面'的地方。 有問題的參數聲明,從而定義:
[StructLayout(LayoutKind.Sequential)] // defined here
public struct SP_DEVICE_INTERFACE_DATA
{
public uint cbSize;
public Guid InterfaceClassGuid;
public uint Flags;
public IntPtr Reserved;
}
anInterface = new SP_DEVICE_INTERFACE_DATA(); // declared here
anInterface.cbSize = (uint)Marshal.SizeOf(anInterface);
anInterface.InterfaceClassGuid = Guid.Empty;
anInterface.Reserved = IntPtr.Zero;
anInterface.Flags = 0;
我都百般挑剔MSDN文章,並就我可以告訴有什麼不妥這裏的代碼。