Mail Archives: djgpp/1997/11/03/13:35:17
>One possibility that I can think of is that Clearcase uses the NT
>SUBST command to create that driveThere are 3 functions of Interrupt 21h,
AX=71AAh,
>described in the Interrupt List, that seem to support a new mechanism
>of SUBST under Windows 9X; maybe NT works this way also? One of these
>functions allows to query what's the pathname associated with a given
>SUBST'ed drive. I attach the info from the Interrupt List below; it
>would be interesting to see whether this function tells anything
>useful about your M: drive.
Well, I could have definitely screwed this test program up, but it doesn't
appear
that my buffer is getting overwriten with anything. I don't have my dos or
intel references
here, but it assembles and runs.
Here's the output -
C:\nasm\TEST>testme
Subst return string should overwrite this
hello world
c:\nasm\TEST>
Here's the program (I borrowed an old hello world program and left it in
there)
[BITS 16]
[ORG 0x100]
[SECTION .text]
jmp start ; [6]
end mov ax,0x4c00 ; [1]
int 0x21
;; INT 21 - Windows95 - LONG FILENAME - QUERY SUBST
;; AX = 71AAh
;; BH = 02h
;; BL = drive number (01h = A:, etc.)
;; DS:DX -> buffer for ASCIZ pathname associated with drive letter
;; Return: CF clear if successful
;; DS:DX buffer filled
;; CF set on error
;; AX = error code (see #1366)
;; 7100h if function not supported
;; Note: the specified drive number may not be 00h (default drive)
;; SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=01h,INT 2F/AX=1000h,#1329
start
mov ax, 0x71aa ; Win95 LFN query subst
mov bh, 0x2 ; ""
mov bl, 0xd ; select drive m
;; ds: dx pointer to buffer
mov dx, ccase_buf
int 0x21 ; call dos
jc end ;
call printstr
mov dx,hello ; [1] [4] [7]
call printstr
jmp end
printstr :
mov ah,9
int 0x21
ret
[SECTION .data]
hello db 'hello world', 13, 10, '$' ; [2]
ccase_buf db 'Subst return string should overwrite this',13,10,'$'; big buf
to use
- Raw text -