Diesmal habe ich einen Fehler, den ich wieder versucht habe herauszufinden, warum es existiert. Obwohl der Fehler ignoriert werden kann, würde ich gerne wissen, warum er auf dem ersten Platz existiert.SetupDiGetDeviceInterfaceDetail unerklärlicher Fehler
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;
}
Dies ist der erste Aufruf dieser Funktion, die für die Einrichtung des Puffergröße Variable für den zweiten Aufruf der Funktion nur zum Zweck ist. Ich erhalte die gedruckte Fehlermeldung: 122 => Der zu einem Systemaufruf übergebene Datenbereich ist zu klein. Nach der Fehlermeldung zu urteilen, musste dies etwas mit dem zweiten Parameter (ref anInterface) zu tun haben und ich konnte dies für den zweiten Durchlauf ignorieren, der sich als wahr herausstellte; aber der Fehler existiert immer noch und ich würde gerne wissen warum, bevor es zurückkommt, um mich in den "Hintern" zu beißen. Der betreffende Parameter deklariert und damit definiert:
[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;
Ich habe die Msdn Artikel zerpflückt und soweit ich sagen kann, es ist nichts falsch mit dem Code hier.