| |
|
|
| Was mache Yo hier falso? (Windows2000/XP) KompilierenMarcaSeparaciónDef @RtlInitUnicodeString(2) !"NTDLL","RtlInitAnsiString"
Def @RtlInitUnicodeString(2) !"NTDLL","RtlInitUnicodeString"
Def @RtlAnsiStringToUnicodeString(3) !"NTDLL","RtlAnsiStringToUnicodeString"
DEF @LsaNtStatusToWinError(1) !"advapi32","LsaNtStatusToWinError"
DEF @FormatMessage(7) !"KERNEL32","FormatMessageA"
Def @RtlInitAnsiString(2) !"NTDLL","RtlInitAnsiString"
Def @ZwOpenFile(6) !"NTDLL","ZwOpenFile"
Def @ZwClose(1) !"NTDLL","ZwClose"
Declare LSA_Unicode#,ANSI$,Unicode#,Fehler&,Ansi#
Declare AHRückgabe&,AHGETERROR_Buffer#,AHGETERROR_Buffer$
Declare FileHandle&,Status_Block&,Object_Attributes#
Windowstyle 31
WindowTitle "Datei auslesen mit Kernelmode APIs"
Window 0,0-640,440
LET ANSI$="??"+"F:EigenesMister RootUnload.CLL" Pfad bitte anpassen
Dim Ansi#,8
DIM Unicode#,514
DIM LSA_Unicode#,8
WORD LSA_Unicode#,0=0
WORD LSA_Unicode#,2=512
LONG LSA_Unicode#,4=UNICODE#
@RtlInitAnsiString(Ansi#,@ADDR(ANSI$))
LET Fehler&=@RtlAnsiStringToUnicodeString(LSA_Unicode#,Ansi#,0)
LET AHRÜCKGABE&=@LsaNtStatusToWinError(Fehler&)
Fehlercode_bestimmen
PRINT AHGETERROR_Buffer$
Print @Char$(UNICODE#,0,@LEN(ANSI$)*2)
DIM Object_Attributes#,24
Clear Object_Attributes#
Long Object_Attributes#,0=24
Long Object_Attributes#,4=0
Long Object_Attributes#,8=LSA_Unicode#
Long Object_Attributes#,12=$40
LET FEHLER&=@ZwOpenFile(@ADDR(FileHandle&),$110003,Object_Attributes#,@ADDR(Status_Block&),$1,$800 | $20 | $2 | $8)
LET AHRÜCKGABE&=@LsaNtStatusToWinError(Fehler&)
Fehlercode_bestimmen
PRINT "ZwOpenFile: "+AHGETERROR_Buffer$
LET FEHLER&=@ZwClose(FileHandle&)
LET AHRÜCKGABE&=@LsaNtStatusToWinError(Fehler&)
Fehlercode_bestimmen
PRINT "ZwClose: "+AHGETERROR_Buffer$
Dispose Unicode#
Dispose LSA_Unicode#
While 0=0
Waitinput
wend
End
Proc Fehlercode_bestimmen
DIM AHGETERROR_Buffer#,32000
@FormatMessage($1000,0,AHRückgabe&,0,AHGETERROR_Buffer#,32000,0) Wandelt Fehlercode in Landesspezifische Message um.
Let AHGETERROR_Buffer$=@trim$(@STRING$(AHGETERROR_Buffer#,0))
Dispose AHGETERROR_Buffer#
/../function-references/XProfan/ENDPROC/'>ENDPROC
Saludo
Andreas |
|
|
| |
|
|
|
Michael Wodrich | ANSI$=??+F:EigenesMister RootUnload.CLLPfad Por favor, adaptar
2 oder 3 Fragezeichen? CLL en lugar de DLL? |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 27.10.2006 ▲ |
|
|
|
|
| Ist sólo irgendein Dateiname. Das todo tut nichts más como el OpenFile API, sólo tut sies auch en el Kernel. El Problemas entstehen en me beim Schließen des Hauptfensters. |
|
|
| |
|
|
|
Michael Wodrich | Und como se uno erraten qué falso es, si simplemente algo eingesetzt se?
P.S.: En me sagt él: Der Vorgang wurde erfolgreich final. Dann se una Unicodestring adecuado (el Dateiname). Den debería uno antes Anzeige umwandeln. |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|
|
| Setze como simplemente veces irgeneinen (vorhandenen) dateinamen con Pfad una. El Fragezeichen necesario bleiben. Zürückgeliefert se en FileHandle& una Handle en el Expediente. |
|
|
| |
|
|
|
Michael Wodrich | Alles liefert Null zurück. Ist el una Fehler oder se el Erfolg signalisieren???
ZwOpenFile aber sólo ZwClose (sin File)??? |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|
|
Michael Wodrich | [box:3dc1a1301e] ----------------------------------------------------- Samstag, el 28. Oktober 2006 - 00:52 ----------------------------------------------------- RtlAnsiStringToUnicodeString CODE:0 LsaNtStatusToWinError CODE:0 LsaNtStatusToWinError CODE:0 Der Vorgang wurde erfolgreich final. ??C:CodeWodMisterRoot.prf ZwOpenFile CODE:0 ZwOpenFile HANDLE: $88 ZwOpenFile STATUS: $0 LsaNtStatusToWinError CODE:0 LsaNtStatusToWinError CODE:0 ZwOpenFile: Der Vorgang wurde erfolgreich final. ZwClose CODE:0 LsaNtStatusToWinError CODE:0 LsaNtStatusToWinError CODE:0 ZwClose: Der Vorgang wurde erfolgreich final. [/box:3dc1a1301e] |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|
|
Michael Wodrich | Der una Fehlercode es siempre doppelt, porque Yo Umlauten en el Variablennamen no traue - habe also una vez Kleinschrift y una vez Großschrift beim Variablennamen benutzt.
Tatsache es: Der Code se ejecuta por (con obigen Meldungen) y luego semmelt el Programa de.
El beiden zusätzlichen Disponer Yo ya con aufgenommen, daran liegt no.
Yo saber desafortunadamente weder el genauen Aufrufparameter todavía el en el Struktur erwarteten Werte, no puede also no weiterhelfen.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|
|
| En me schwirrt el Code con Zugriffsverletzung ebenfalls beim Schließen des Hauptfensters de - se ejecuta aber sonst alles sin Problemas por. Windows Bug oder Denkfehler? Das Problema scheint en ZwOpenFile a mentira. ZwClose scheint como auch al richtigen Platz a ser - merkwürdig...
PS: 0=Erfolgsmeldung (NT_STATUS Codes).
Bin gerade en el Vorbereitungen para media Treiber. Hab mich entschieden, doch en Registry a ir, el es sowieso mejor. Yo schreib sólo veces Kernelcode en Profan; el voluntad Yo entonces nacher en MASM umsetzen.
Wundere dich no en APIs - el son Nativo APIs - en el Kernel gibts nichts más.
@IF: Was para una Treiber willst du escribir? Tal vez puede ser se austauschen... |
|
|
| |
|
|
|
| [quote:1695c7078e]@IF: Was para una Treiber willst du escribir? Tal vez puede ser se austauschen...[/quote:1695c7078e] Yo brauche algo muy einfaches - qué aber tal vez genau deshalb garnicht así simplemente a bewerkstelligen es.
Einen Druckertreiber - el no Druckt - pero el Expediente des a druckenden Dokumentes a una Punto en el Netzwerk kopiert. |
|
|
| |
|
|
|
| Dakannst du einiges de el qué hier es tal vez ya gebrauchen. |
|
|
| |
|
|
|
Michael Wodrich | [quote:25b82596d4]Einen Druckertreiber - el no Druckt - pero el Expediente des a druckenden Dokumentes a una Punto en el Netzwerk kopiert.[/quote:25b82596d4] Lo läßt se aber doch cada Druckertreiber así einstellen, el él en un Expediente druckt. En me se ejecuta el seit Jahr y Tag así (habe nämlich no Drucker).
Eingestellt es una Laserdrucker (Postscript). El Expediente se entonces anschließend con un Tool (WordToPdf) en un PDF-Expediente gewandelt.
Aus OpenOffice va el natürlich einfacher, aber todos otro Anwendungen erzeugen en esta Art auch una PDF.
Wenn Yo entonces wirklich veces a la Imprimir su brauche gehts con el PDF de a Freunden...
Schöne Grüße Michael Wodrich
Hab veces rápidamente nachgesehen: Canon C LBP 460PS |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|