2009-07-13 8 views
0

Ich muss eine eindeutige Geräte-ID für ein CE 6.0-Gerät generieren. Unter Windows verwendete ich die WMI, um einige Hardware-IDs zu erhalten, aus denen ich diese ID konstruierte. Anscheinend wird WMI auf Win CE nicht unterstützt, daher suche ich nach Alternativen.Eindeutige Geräte-ID für ein Windows CE-Gerät

Im Moment spiele ich mit dem OS-Image, das ich in Platform Builder erstellt habe und teste meine App im Emulator, erst später werde ich das echte WinCE-Gerät geliefert bekommen.

Ich habe sowohl GetDeviceUniqueID als auch KernelIoControl(IOCTL_HAL_GET_DEVICEID,... ausprobiert, aber beide geben ERROR_NOT_SUPPORTED (0x80070032) zurück.

  1. Muss ich ein Paket aus dem wince-Katalog hinzufügen, um diese Funktion zu aktivieren?
  2. Ist diese Beschränkung nur für Emulatoren? (Ich meine, könnte es sein, dass OEMs dieses einzigartige ID-Feature für echte Geräte implementieren?

  3. Haben Sie eine andere Idee, wie ich diesen Wert konstruieren könnte? Wie bekommen Hardware/OS-Serien etc. und wie? .

Antwort

2

wenn Sie‘ Um das Betriebssystem zu erstellen, müssen Sie die IOCTL implementieren, damit KernelIoControl etwas zurückgibt. Ich habe den MAC als Basis gesehen, sowie die Seriennummer des On-Board-Flash.

Wie würden Sie tun, dass für die jeweilige Plattform kann ich nicht sagen, aber als Beispiel für x86 könnte Sie clone the code at% WINCEROOT & \ PLATFORM \ COMMON \ SRC \ X86 \ COMMON \ IOCTL \ devinfo.c und Ändern Sie den Klon (nicht ändern Sie den gemeinsamen Code, natürlich).

0

Nicht sicher, ob es ein alter Hut ist, aber this thread scheint relevant es scheint, sowohl Leute mit Emulatoren zu erwähnen immer „real aussehende“ ID: s, und die Leute immer konstant 0.

+0

Ich kam zu diesem Link auch bei der Suche nach der Lösung. Es ist nicht klar, aber ich vermute, dass diejenigen, die 0 als ID bekamen, das gleiche Problem hatten wie ich. Eigentlich habe ich bei meinem ersten Versuch auch 0 bekommen, habe aber erst später das HRESULT überprüft und den Fehler bemerkt. Also nehme ich an, dass sie auch einen Fehlercode bekommen (und das HRESULT ignorieren). –