[Back to DOS SWAG index] [Back to Main SWAG index] [Original]
{
EH> I am looking for a way to determine a filehandles' attributes, like is
EH> possible in OS/2.
EH> The attributes I like to query (and maybe set), are the standard-file
EH> attribs. Still I cannot find a way to get to them except with the
EH> filename, and a dos interrupt. What I am looking for is a dos interrupt
EH> that does exactly the same, but uses a filehandle instead of a filename.
No no no, file attributes can be returned/set only via DOS function 43h that
assumes DS:DX point to a ASCIIZ file name. :(
{ File attributes (combine these when setting) }
faNormal = $0000;
faReadOnly = $0001;
faHidden = $0002;
faSysFile = $0004;
faVolumeID = $0008;
faDirectory = $0010;
faArchive = $0020;
faAnyFile = $003F;
Function GetFileAttr(FileName : PChar) : integer; assembler;
{ Retrieves the attribute of a given file. The result is returned by DosError }
Asm
MOV DosError,0
PUSH DS
LDS DX,FileName
MOV AX,4300h
INT 21h
POP DS
JNC @@noerror
MOV DosError,AX { save error code in DOS global variable }
@@noerror:
MOV AX,CX
End; { GetFileAttr }
Procedure SetFileAttr(FileName : PChar; Attr : word); assembler;
{ Sets the new attribute to a given file. The result is returned by DosError }
Asm
MOV DosError,0
PUSH DS
LDS DX,FileName
MOV CX,Attr
MOV AX,4301h
INT 21h
POP DS
JC @@noerror
MOV DosError,AX
@@noerror:
End; { SetFileAttr }
[Back to DOS SWAG index] [Back to Main SWAG index] [Original]