Ersatz für UuidCreate/CoCreateGuid in (kernelmode) Treiber?
-
Ich müsste in einem (kernelmode) Treiber (in einem bestimmten Fall) eine (eindeutige) GUID generieren.
Blöderweise habe ich bis jetzt keine Möglichkeit gefunden das zu tun. UuidCreate bzw. CoCreateGuid fallen ja flach, da ich nicht einfach Usermode funktionen verwenden kann. Genauso CryptGenRandom.
Die einzige Funktion die irgendetwas in der Art anbietet die ich gefunden habe wäre NtQuerySystemInformation (bzw. ZwQuerySystemInformation), bloss die ist im DDK nichtmal dokumentiert (im SDK schon lustigerweise). In den DDK Headers gibt's die Funktion anscheinend auch nicht. Irgendwie sieht das für mich einfach nicht so aus als ob man die Funktion in einem Treiber verwenden sollte. Davon abgesehen bekomme ich von NtQuerySystemInformation auch noch keine "fertigen" Zufallszahlen, sondern bloss ein paar Statistiken die ich mir erst noch selbst zu einer GUID "zusammenhashen" müsste -- etwas worauf ich auch lieber verzichten würde.
Es wäre toll wenn mir jemand weiterhelfen könnte.
EDIT: die Funktion läuft auf IRQL "PASSIVE_LEVEL", also ich könnte ggf. Devices aufmachen o.ä.
-
http://www.osronline.com/DDKx/kmarch/k102_8lyq.htm
btw: NtQuerySystemInformation ist für was ganz anderes da.

-
Naja, die MSDN sagt zu NtQuerySystemInformation u.A. folgendes:
MSDN, NtQuerySystemInformation schrieb:
(...)
SYSTEM_PERFORMANCE_INFORMATION
When the SystemInformationClass parameter is SystemPerformanceInformation, the buffer pointed to by the SystemInformation parameter should be large enough to hold an opaque SYSTEM_PERFORMANCE_INFORMATION structure for use in generating an unpredictable seed for a random number generator. For this purpose, the structure has the following layout:
(...)Dasselbe steht da dann wieder für z.B. SYSTEM_INTERRUPT_INFORMATION, SYSTEM_EXCEPTION_INFORMATION und ein paar andere.
Wäre IMO also schon eine "Notlösung" gewesen. Und ich schätze Windows wird intern wohl selbst u.A. NtQuerySystemInformation (bzw. ZwQuerySystemInformation) verwenden um Seedwerte für CryptGenRandom o.ä. zu bekommen -- so Interrupt Statistiken sind ja halbwegs brauchbare Entropie, die wird Windows wohl hoffentlich nicht einfach wegwerfen.Davon abgesehen DANKE DANKE und nochmals DANKE!

BTW: gibts irgendeine Möglichkeit die DDK Doku (oder auch andere Windows' *DK Dokus) mit Wildcards zu durchsuchen? Ich hab' nach 'UuidCreate' gesucht und nix gefunden, wenn ich nach '*UuidCreate*' hätte suchen können hätte das wahrscheinlich gereicht...
-
hustbaer schrieb:
BTW: gibts irgendeine Möglichkeit die DDK Doku (oder auch andere Windows' *DK Dokus) mit Wildcards zu durchsuchen? Ich hab' nach 'UuidCreate' gesucht und nix gefunden, wenn ich nach '*UuidCreate*' hätte suchen können hätte das wahrscheinlich gereicht...
ich weiss auch nicht ob das geht, aber du könntest dir z.b. das hier: http://jedi-apilib.sourceforge.net/native/
runterladen und darin nach UUID suchen.
da sind auch funktionen aufgelistet, die 'offiziell' nicht im DDK auftauchen.

btw: für NtQuerySystemInformation --> http://void.ru/files/Ntexapi.h
-