| |
|
|
| quoi fais je ici faux? (Windows2000/XP) KompilierenMarqueSéparationDef @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
Salut
Andreas |
|
|
| |
|
|
|
Michael Wodrich | ANSI$=??+F:EigenesMister RootUnload.CLLPfad s'il te plaît anpassen
2 ou bien 3 Fragezeichen? CLL statt DLL? |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 27.10.2006 ▲ |
|
|
|
|
| Ist seulement irgendein Dateiname. cela ganze tut rien d'autre comme qui OpenFile API, seulement tut sies aussi im Kernel. qui Probleme entstehen chez mir beim Schließen des Hauptfensters. |
|
|
| |
|
|
|
Michael Wodrich | et comment soll on deviner quoi faux ist, si simple irgendwas eingesetzt wird?
P.S.: chez mir sagt il: qui Vorgang wurde erfolgreich finissez. ensuite wird un Unicodestring angezeigt (qui Dateiname). Den sollte on avant qui Anzeige transformer. |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|
|
| mets là simple la fois irgeneinen (vorhandenen) dateinamen avec Pfad un. qui Fragezeichen doit rester. Zürückgeliefert wird dans FileHandle& un Handle sur qui Dossier. |
|
|
| |
|
|
|
Michael Wodrich | Alles liefert zéro zurück. Ist cela un faute ou bien soll cela Erfolg signalisieren???
ZwOpenFile mais seulement ZwClose (sans File)??? |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|
|
Michael Wodrich | [box:3dc1a1301e] ----------------------------------------------------- samedi, qui 28. octobre 2006 - 00:52 ----------------------------------------------------- RtlAnsiStringToUnicodeString CODE:0 LsaNtStatusToWinError CODE:0 LsaNtStatusToWinError CODE:0 qui Vorgang wurde erfolgreich finissez. ??C:CodeWodMisterRoot.prf ZwOpenFile CODE:0 ZwOpenFile HANDLE: $88 ZwOpenFile STATUS: $0 LsaNtStatusToWinError CODE:0 LsaNtStatusToWinError CODE:0 ZwOpenFile: qui Vorgang wurde erfolgreich finissez. ZwClose CODE:0 LsaNtStatusToWinError CODE:0 LsaNtStatusToWinError CODE:0 ZwClose: qui Vorgang wurde erfolgreich finissez. [/box:3dc1a1301e] |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|
|
Michael Wodrich | qui une Fehlercode ist toujours doppelt, weil je Umlauten im Variablennamen pas traue - habe alors einmal Kleinschrift et einmal Großschrift beim Variablennamen benutzt.
Tatsache ist: qui Code fonctionne par (avec obigen Meldungen) et ensuite semmelt cela Programme ab.
qui beiden zusätzlichen Dispose habe je déjà avec aufgenommen, daran liegt es pas.
je connais malheureusement weder qui genauen Aufrufparameter encore qui dans qui Struktur erwarteten Werte, peux là alors pas weiterhelfen.
belle Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|
|
| chez mir schwirrt qui Code avec Zugriffsverletzung également beim Schließen des Hauptfensters ab - fonctionne mais sonst alles sans Probleme par. Windows Bug ou bien Denkfehler? cela Problem scheint chez ZwOpenFile trop liegen. ZwClose scheint là aussi am richtigen place trop son - merkwürdig...
PS: 0=Erfolgsmeldung (NT_STATUS Codes).
suis justement chez den Vorbereitungen pour meinen Treiber. Hab mich entschieden, doch sur qui Registry pour aller, c'est sowieso besser. je schreib seulement la fois Kernelcode dans Profan; den werde je ensuite nacher dans MASM umsetzen.
Wundere toi pas sur qui APIs - ce sont Native APIs - im Kernel gibts rien d'autre.
@IF: quoi pour une Treiber veux du écrivons? peut-être peux on sich austauschen... |
|
|
| |
|
|
|
| [quote-part:1695c7078e]@IF: quoi pour une Treiber veux du écrivons? peut-être peux on sich austauschen...[/quote-part:1695c7078e] il me faut quelque chose très simple - quoi mais peut-être oui c'est ca c'est pourquoi garnicht so simple trop bewerkstelligen ist.
Einen Druckertreiber - qui pas Druckt - mais qui Dossier des trop druckenden Dokumentes à une Stelle im Netzwerk kopiert. |
|
|
| |
|
|
|
| Dakannst du einiges de dem quoi ici steht peut-être déjà gebrauchen. |
|
|
| |
|
|
|
Michael Wodrich | [quote-part:25b82596d4]Einen Druckertreiber - qui pas Druckt - mais qui Dossier des trop druckenden Dokumentes à une Stelle im Netzwerk kopiert.[/quote-part:25b82596d4] Es läßt sich mais doch chacun Druckertreiber so einstellen, cela il dans un Dossier druckt. chez mir fonctionne cela depuis l'an et journée so (habe nämlich keinen Drucker).
Eingestellt est un Laserdrucker (Postscript). qui Dossier wird ensuite anschließend avec einem Tool (WordToPdf) dans un PDF-Dossier gewandelt.
Aus OpenOffice allez cela naturellement einfacher, mais alle anderen Anwendungen erzeugen sur cet Art aussi une PDF.
si je ensuite wirklich la fois une Imprimer en brauche gehts avec qui PDF ab trop Freunden...
belle Grüße Michael Wodrich
Hab la fois vite nachgesehen: Canon C LBP 460PS |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|