Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

SUBST in C

Mdl / 8 Antworten / Flachansicht Nickles

Eigentlich sollte das doch ganz einfach sein: In C die Kommandozeilenfunktion SUBST, bzw eigentlich nur

  SUBST /D, d.h. das Ermitteln des einem virtuellen Laufwek zugewiesenen Verzeichnisses

zu realisieren.

Aber trotz intensiver Suche gestern z.B., hab ich nichts brauchbares gefunden.

Vielleicht hat von Euch jemand eine Idee.

Vielen Dank Euch,

Mdl

P.S. Idealerweise sollte dies ohne das Einbeziehen von Windows-Fkt. möglich sein, da ich es in ein Prg. einbauen will, das ohne diese auskommt. Wer aber (nur) eine Lösung innerhalb Windows hat, hilft mir dadurch schon auch...

bei Antwort benachrichtigen
Mdl mi~we „Ach, da werden Erinnerungen wach.... Ja, das geht über den ...“
Optionen

Hi Mi~we,

merci für den Link.

Nach einigem Rumprobieren mit meinem Compiler, hab ich auch die richtige Syntax gefunden, aber noch Probleme bei der Zuweisung von ds:dx: Im Link steht ja bei 'Query SUBST':

DS:DX muß auf einen ausreichend großen Puffer zeigen, der den substituierten Pfad als ASCIZ-String aufnimmt.

Meine Versuche für diese Anweisung sind bisher schon an der Semantik gescheitert:

char buffer[MAX_PATH];

asm {
    mov ax, 71AAh;
    mov bh, 02h; // => 0: Create SUBST, 1: Terminate SUBST, 2: Query SUBST
    mov bl, 26; // DRIVE: 00=A:, ..., 26=Z

    // FEHLER! WIE GEHT DAS? 
    mov ds:dx, buffer; // DS:DX den Speicher von 'buffer' zuweisen...

    int 21h;
};
printf("SUBST of Z: is %s.", buffer);

(Meine Vermutung war, dass ich die 32-Bit-Adresse von buffer in zwei 16-Bit Werte aufteilen muss und diese dann DS und BX zuweisen muss, aber auch das ist gescheiert (und sogar bei so simplen Anweisungen wie 'mov ds,0' gab's 'nen Compiler-Fehler)

Ist ja auch schon ein Weilchen her, dass ich mit Assembler und Registern zu tun hatte.
Und programmiert hab ich damals mit Motorolla's Z80-Prozessor ;-)

Was wäre also die korrekte Anweisung?

Gruß,

Mdl

bei Antwort benachrichtigen