C# 调用SetupDiGetDeviceInterfaceDetail第二次调用成功,结果也能拿到,但是过会一导致程序崩溃?请大佬支援!



```c#
SetupApi.SafeDeviceInfoSetHandle deviceHandle=SetupApi.SetupDiGetClassDevs(guid,"",IntPtr.Zero, SetupApi.GetClassDevsFlags.DIGCF_DEVICEINTERFACE|SetupApi.GetClassDevsFlags.DIGCF_PROFILE);
SetupApi.SP_DEVICE_INTERFACE_DATA sP_DEVICE_INTERFACE_DATA = new SetupApi.SP_DEVICE_INTERFACE_DATA();
sP_DEVICE_INTERFACE_DATA.Size = Marshal.SizeOf(sP_DEVICE_INTERFACE_DATA);
 IntPtr intptr = Marshal.AllocHGlobal(1024);
  for (int i = 0; i < 1; i++) {
           if (SetupApi.SetupDiEnumDeviceInterfaces(deviceHandle,IntPtr.Zero, ref guid,i, ref sP_DEVICE_INTERFACE_DATA)) {
                 if (!SetupApi.SetupDiGetDeviceInterfaceDetail(deviceHandle, ref sP_DEVICE_INTERFACE_DATA,IntPtr.Zero,0,intptr,IntPtr.Zero)) {
                            SetupApi.SP_DEVICE_INTERFACE_DETAIL_DATA oDevInterfaceDetailedData;
                            oDevInterfaceDetailedData.cbSize = SetupApi.SP_DEVICE_INTERFACE_DETAIL_DATA.ReportableStructSize;
                            IntPtr devInt = Marshal.AllocHGlobal(Marshal.SizeOf(oDevInterfaceDetailedData.cbSize));
                            Marshal.StructureToPtr(oDevInterfaceDetailedData,devInt,false);
                            int nRequiredSize =Marshal.ReadInt32(intptr,0);
                            Marshal.FreeHGlobal(intptr);
                        if (SetupApi.SetupDiGetDeviceInterfaceDetail(deviceHandle,ref sP_DEVICE_INTERFACE_DATA,devInt,nRequiredSize,IntPtr.Zero,IntPtr.Zero))
                            {
                                oDevInterfaceDetailedData = (SetupApi.SP_DEVICE_INTERFACE_DETAIL_DATA)Marshal.PtrToStructure(devInt,typeof(SetupApi.SP_DEVICE_INTERFACE_DETAIL_DATA));
                                //string str=new string(oDevInterfaceDetailedData.DevicePath);
                                Marshal.FreeHGlobal(devInt);
                                deviceHandle.Dispose();
                        }
                        
                        MessageBox.Show(Marshal.GetLastWin32Error().ToString());
                        }
                   
                }
               
            }

```

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。