Cette fois j'ai une erreur que j'ai essayé à nouveau de comprendre pourquoi il existe. Bien que l'erreur puisse être ignorée mais j'aimerais savoir pourquoi elle existe en 1ère place.SetupDiGetDeviceInterfaceDetail d'erreur inexplicables
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;
}
C'est le 1er appel à cette fonction qui est juste dans le but de régler la buffersize variable pour le deuxième appel à la fonction. Je reçois le message d'erreur affiché: 122 => La zone de données passée à un appel système est trop petite. A en juger par le message d'erreur, je me suis dit que cela devait avoir quelque chose à voir avec le second paramètre (ref anInterface) et que je pouvais l'ignorer pour le second passage qui s'est avéré être vrai; mais l'erreur existe toujours et j'aimerais savoir pourquoi avant de revenir me mordre à l'arrière. Le paramètre en question est déclarée et définie ainsi:
[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;
J'ai pris à part les articles et msdn pour autant que je peux dire qu'il n'y a rien de mal avec le code ici.