Hallo Marwin, Hallo Darthshoot,
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
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:
- 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!$'
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 …