Ordner wechseln
Moderatoren: crack, Krüsty, Marwin
- crack
- Administrator
- Beiträge: 280
- Registriert: Dienstag 21. Dezember 2004, 15:02
- Wohnort: 53783 Eitorf
- Kontaktdaten:
THX MarwinIch kann mir nicht vorstellen, dass das Problem mit Freigaben zusammenhängt. Diese Freigaben sind eher im Netzwerk zu verstehen.
INT 21h/3Bh erwartet den Pfad in DS:DX. Eventuell musst du sicherstellen, dass DS mit CS identisch ist. LEA übernimmt das meines Wissens nach nicht.
...manchmal sieht man den Wald vor lauter Bäumen nicht ...
Ok, bei diesem Szenario sähe der zu verwendende Code dann ungefähr so aus:
Code: Alles auswählen
data segment word 'data'
MyPath db'c:\windows\system32',0
...
code segment public word 'code'
...
mov ax, seg MyPath
mov ds, ax
mov dx, offset MyPath
mov ah, 3bh
int 21h
...
mit freundlichen grüssen,
with best regards,
crack
with best regards,
crack
-
Darthshoot
- Member
- Beiträge: 23
- Registriert: Dienstag 11. Juli 2006, 20:25
- crack
- Administrator
- Beiträge: 280
- Registriert: Dienstag 21. Dezember 2004, 15:02
- Wohnort: 53783 Eitorf
- Kontaktdaten:
Hallo Marwin, Hallo Darthshoot,
Ich habe mir einmal den geposteten Code angepasst:
und mit dem A86 von Eric Isaacson Kompiliert und getestet. Es funktionierte nicht. Danach habe ich einen minimalen Fehlerabfang eingebaut um nur die Funktion ‚Laufwerk und Pfad wechseln’ zu testen:
Egal wie ich den Pfad des Ordners benannt habe und was ich als ‚Abschlusszeichen’ verwendet habe (0h oder ‚$’) immer das gleiche Ergebnis: ‚Datei nicht gefunden’ (das carry flag wurde gesetzt), ok, da ist guter Rat teuer… Die Win32SDK.HLP hat mich dann auf die richtige Spur gebracht: Es werden auch unter Win32 entsprechende Interrupt 21h Funktionen unterstützt und benutzt, aaaaber der Unterschied ist folgender die Ursprünglichen DOS Funktionen sind für das FAT16 Dateisystem gedacht, und unterstützen nicht das FAT32 oder das NTFS System.
Hier werden neue Int 21 benutzt wie zum Beispiel:
Int 21h Function 440Dh Minor Code 40h (FAT32) SetDriveParameter
Ergo: man muss wohl oder übel diese neuen Int 21 Funktionen benutzen. Tja, so ist es …
Ich habe mir einmal den geposteten Code angepasst:
Code: Alles auswählen
data segment
CDirRoot db 'C:\WINDOWS\System32\',0
Files db '*.tmp',0
code segment
org 100h
mov ah, 0e
mov dl, 2
int 021
mov ax, seg CDirRoot
mov ds, ax
mov ah, 03b
mov dx, offset CDirRoot
int 021
mov ah, 041
mov dx, offset Files
xor cx, cx
int 021
mov ax, 04c00
int 021
Code: Alles auswählen
org 100h
mov ah, 0e
mov dl, 2
int 021
mov ah, 03b
mov dx, offset CDirRoot
int 021
jnc X2
mov dx, offset alarm
mov ah,9
int 021
X2:
mov ax, 04c00
int 021
CDirRoot db 'c:\Windows\system32$'
Files db '*.tmp',0
alarm db 'Datei nicht gefunden!$'
Hier werden neue Int 21 benutzt wie zum Beispiel:
Int 21h Function 440Dh Minor Code 40h (FAT32) SetDriveParameter
Ergo: man muss wohl oder übel diese neuen Int 21 Funktionen benutzen. Tja, so ist es …
mit freundlichen grüssen,
with best regards,
crack
with best regards,
crack
-
Darthshoot
- Member
- Beiträge: 23
- Registriert: Dienstag 11. Juli 2006, 20:25