NTAPI: NtCreateFile gibt STATUS_INVALID_PARAMETER zurück, warum?
-
Was ist denn ein "natives" NT-Programm...
Es gibt halt nun mal keine offizielle Doku zu der nativen-WinAPI, somit sind alle Programme die sowas verwenden murks... (meine pers. Meinung)
-
Was ist denn ein "natives" NT-Programm...
Eins das direkt auf NT aufsetzt, wie Gerätetreiber, und nicht auf win32.
Es gibt halt nun mal keine offizielle Doku zu der nativen-WinAPI, somit sind alle Programme die sowas verwenden murks... (meine pers. Meinung)
Native NT-Programme scheinen von MS wirklich schlecht bis gar nicht dokumentiert zu sein, aber Gerätetreiber schon.
Das ist im Grunde ein Programm, das man so schreiben muss wie ein Gerätetreiber.
Diese Funktion ist genau die, die man auch in einem Gerätetreiber verwenden müsste, wollte man mit einem Gerätetreiber direkt auf eine Datei zugreifen.Die Frage ist natürlich, warum muss es einen natives NT-Programm sein und kein win32. Es soll (muss damit es richtig funktioniert) wärend das Bootvorgangs gestartet werden, zur gleichen Zeit wie scandisk (autochk), da geht win32 noch nicht.
Als win32 läuft das Programm bereits perfekt, ich muss es jetzt "nur" noch auf native-NT portieren.
-
hat zwar nichts mit deinem problem zu tun, aber vielleicht findste diese seite interessant: http://www.sysinternals.com/information/nativeapplications.html
und: http://www.sysinternals.com/information/nativeapi.html
-
S_O schrieb:
Eins das direkt auf NT aufsetzt, wie Gerätetreiber, und nicht auf win32.
Ich dachte wir reden von User-Mode Apps und nicht von Device-Treibern (da hätte er nämlich *nicht* NtCreateFile verwendet!)
-
hat zwar nichts mit deinem problem zu tun, aber vielleicht findste diese seite interessant: http://www.sysinternals.com/information/nativeapplications.html
und: http://www.sysinternals.com/information/nativeapi.htmlVon genau diesen Seiten weiß ich wie man so ein Programm überhaupt macht

Viel mehr scheint es dazu leider auch nicht zu geben.
-
Ich dachte wir reden von User-Mode Apps und nicht von Device-Treibern (da hätte er nämlich *nicht* NtCreateFile verwendet!)
Ich mein genau so ein Programm, wie das in den Seiten die net gepostet hat beschrieben wird.
-
Also ein Device/Filter-Treiber. Dann lädst Du Dir das DDK runter und da sind tausende Beispiele dabei:
http://www.microsoft.com/whdc/driver/wdf/KMDF_pkg.mspx
-
Also ein Device/Filter-Treiber. Dann lädst Du Dir das DDK runter und da sind tausende Beispiele dabei:
http://www.microsoft.com/whdc/driver/wdf/KMDF_pkg.mspxDas DDK hab ich natürlich installiert, ich brauch ja die header/libs daraus um mein Programm zu kompilireren. Ich habe jetzt auch die Beispiele nachinstalliert, ich habe jetzt alles nach *CreateFile* durchsucht, aber kein Beispiel scheint ZwCreateFile oder NtCreateFile zu verwenden, nur win32-Anwendungen die CreateFile verwenden hab ich gefunden.
Hat irgendjemand eine Idee, wo mein Fehler liegen könnte? Es handelt sich wie gesagt nicht um eine win32-Anwendung, sondern um so was ähnliches wie ein Gerätetreiber.
Ist der Dateiname den so richtig? Meinchmal liegt es ja an so einfachen Sachen. Sind die Laufwerksbuchstaben da überhaupt verfügbar oder muss man da vielleicht eine andere Schreibweise mit Device\Harddisk0\Partition1, \?\Volume{08a4ee15-86cd-11d4-a06e-806d6172696f}\ oder was auch immer verwenden?
-
-
Ich hab es jetzt mal NtOpenFile anstelle von NtCreateFile versucht, jetzt klappt es:
status = NtOpenFile( &datei_h, GENERIC_READ | GENERIC_WRITE, &datei_a, &datei_s, 0, FILE_NON_DIRECTORY_FILE | FILE_RANDOM_ACCESS );Vielen Dank!