@Krashan, post #2
@Krashan, post #2
Może Lock("DF0:") i potem NameFromLock().
@cholok, post #5
A nie widzę jak zmatchować np 'DH0' do 'SYSTEM' :/
task = FindTask(NULL); task->pr_WindowPtr = (APTR)-1;
@Hexmage960, post #6
MODULE 'dos/dos',
'dos/dosextens'
PROC main()
DEF _lock=NIL, _i,
_label[40]:STRING,
_driveName[5]:STRING,
_process=NIL:PTR TO process,
_oldWindowPtr:LONG
_process:=FindTask(NIL)
_oldWindowPtr:=_process.windowptr
_process.windowptr:=-1
FOR _i:=0 TO 3
StringF(_driveName, 'DF\d:', _i)
_lock:=Lock (_driveName, ACCESS_READ)
IF _lock
NameFromLock(_lock, _label, 40)
UnLock(_lock)
WriteF('\s \s \n', _driveName, _label)
ELSE
PrintFault(IoErr(), _driveName)
ENDIF
ENDFOR
_process.windowptr:=_oldWindowPtr
ENDPROCDF0:: brak dysku w napędzie DF1:: to nie jest dysk w formacie DOS-u DF2: Lasermania 2: DF3:: urządzenie (lub wolumen) nie jest zamontowane
@vojo, post #4
doslist=LockDosList(LDF_DEVICES|LDF_VOLUMES|LDF_READ);
dosentry=FindDosEntry(doslist, "DF0", LDF_DEVICES);
if (dosentry)
{
while (doslist=NextDosEntry(doslist, LDF_VOLUMES))
{
if (dosentry->dol_Task==doslist->dol_Task)
{
// doslist->dol_Name to nazwa wolumenu
}
}
}
UnlockDosList(LDF_DEVICES|LDF_VOLUMES|LDF_READ);