C# DeviceIoControl返回false

C# DeviceIoControl返回false,c#,interop,hardware,C#,Interop,Hardware,在我的C代码中,DeviceIoControl返回false,句柄是正确的 DeviceIoControl(deviceHandle, IOCTL_STORAGE_GET_DEVICE_NUMBER, IntPtr.Zero, 0, OutBuffPtr,//&psdn, OutBuffSize, ref dwBytesReturned, IntPtr.Zero); 这里没有太多的数据,但应该会提供更具体的错误信息。我确实尝试使用Marshal.GetLa

在我的C代码中,DeviceIoControl返回false,句柄是正确的

DeviceIoControl(deviceHandle,
  IOCTL_STORAGE_GET_DEVICE_NUMBER,
  IntPtr.Zero,
  0,
  OutBuffPtr,//&psdn,
  OutBuffSize,
  ref dwBytesReturned,
   IntPtr.Zero);

这里没有太多的数据,但应该会提供更具体的错误信息。

我确实尝试使用Marshal.GetLastWin32Error(),它返回1,根据MSDN,这意味着函数不正确。 在代码中,我试图从kernel32.dll中的函数DeviceIoControl获取将Intptr传递到大小为STORAGE_device_number(12字节)的缓冲区的设备号

我走到了死胡同