Windows CE 6.0 장치에 연결된 USB 스틱의 일련 번호를 가져와야합니다. 내가 KernelIoControl
와 함께 노력하고 윈도우 CE 6.0 장치의 시리얼 번호가 있지만 그것에 연결된 USB가 아니야.Windows에서 USB의 일련 번호 Ce 6.0 in C#
private static string GetDeviceID()
{
// Initialize the output buffer to the size of a
// Win32 DEVICE_ID structure.
byte[] outbuff = new byte[20];
Int32 dwOutBytes;
bool done = false;
Int32 nBuffSize = outbuff.Length;
// Set DEVICEID.dwSize to size of buffer. Some platforms look at
// this field rather than the nOutBufSize param of KernelIoControl
// when determining if the buffer is large enough.
BitConverter.GetBytes(nBuffSize).CopyTo(outbuff, 0);
dwOutBytes = 0;
// Loop until the device ID is retrieved or an error occurs.
while (!done)
{
if (KernelIoControl(IOCTL_HAL_GET_DEVICEID, IntPtr.Zero,
0, outbuff, nBuffSize, ref dwOutBytes))
{
done = true;
}
else
{
int error = Marshal.GetLastWin32Error();
switch (error)
{
case ERROR_NOT_SUPPORTED:
throw new NotSupportedException(
"IOCTL_HAL_GET_DEVICEID is not supported on this device",
new Win32Exception(error));
case ERROR_INSUFFICIENT_BUFFER:
// The buffer is not big enough for the data. The
// required size is in the first 4 bytes of the output
// buffer (DEVICE_ID.dwSize).
nBuffSize = BitConverter.ToInt32(outbuff, 0);
outbuff = new byte[nBuffSize];
// Set DEVICEID.dwSize to size of buffer. Some
// platforms look at this field rather than the
// nOutBufSize param of KernelIoControl when
// determining if the buffer is large enough.
BitConverter.GetBytes(nBuffSize).CopyTo(outbuff, 0);
break;
default:
throw new Win32Exception(error, "Unexpected error");
}
}
}
에서 Windows CE 6 장치에 USB 메모리를 연결하면 새 하드 디스크, 내가 등록이 새로운 장치의 특성에 올 필요 인식에서 사용할 수있는 USB 포트의 제어를 저에게 보여줍니다 내 창문 6 장치.
USB 장치에는 일련 번호가 없습니다. FAT32 볼륨의 일련 번호를 가져올 수는 있지만 사소하게 수정되어 라이센스 확인 작업을하는 데 쓸모가 없습니다. 대신 동글을 구입하십시오. –