kategoria: Asembler
[#1] Jak sprawdzić czy dyskietka jest zabezpieczona przed zapisem?
Mam taki problem: chciałbym zapisać plik (używam wywołania Open z bilioteki dos w trybie MODE_NEWFILE, a potem Write) ale pojawia się problem bo Open zawiesza się w momencie gdy dyskietka jest zabezpieczona przed zapisem. W normalnych warunkach pojawia się okno z komunikatem, ale ponieważ wyłączam system to program zawiesza się bo nie może nic wyświetlić.
Czy da się zablokować wyświetlanie komunikatu tak żeby Open po prostu zwróciło błąd?
lub
Jak sprawdzić czy dyskietka jest zabezpieczona (próbowałem wywołać funkcję Info z biblioteki dos debugując za pomocą AsmOne, ale na jednym systemie wywala mi debuger z komunikatem privilege exception a na drugim się po prostu zawiesza, może coś źle robię)?
[wyróżniony] [#2] Re: Jak sprawdzić czy dyskietka jest zabezpieczona przed zapisem?

@Zbych, post #1

Requestery możesz wyłączyć tak:

https://www.ppa.pl/forum/programowanie/39954/volume-name-z-urzadzenia#m644676

(post Hexa #6).

A zabezpieczenie przed zapisem można sprawdzić przez trackdisk.device:

http://amigadev.elowar.com/read/ADCD_2.1/Devices_Manual_guide/node00ED.html


Ostatnia aktualizacja: 19.12.2019 14:14:43 przez vojo
[#3] Re: Jak sprawdzić czy dyskietka jest zabezpieczona przed zapisem?

@vojo, post #2

Dzięki, wstępnie przetestowałem z tym wyłączaniem requesterów i wygląda na to że zadziałało :D co prawda piszę w asemblerze, a nie C, ale coś się nauczyłem - jak używać struktur w asmie.
[#4] Re: Jak sprawdzić czy dyskietka jest zabezpieczona przed zapisem?

@vojo, post #2

A czy istnieje jakiś bardziej uniwersalny sposób na to czy dysk/plik jest tylko do odczytu? Czy muszę sprawdzić, czy dysk jest flopem i wtedy sprawdzać przy użyciu trackdisk.device?
[#5] Re: Jak sprawdzić czy dyskietka jest zabezpieczona przed zapisem?

@teh_KaiN, post #4

Istnieje uniwersalny sposób - możesz użyć do tego celu funkcję Info() z biblioteki dos. Jako parametr podajesz wynik funkcji Lock() na dysku lub pliku (np. Lock("DF0:")).

Zwróci ona strukturę InfoData dot. dysku. Sprawdzasz stan dysku (id_DiskState == ID_WRITE_PROTECTED).

http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_3._guide/node05F8.html#line146

Jeżeli interesuje Cię więcej informacji dot. plików i bitów protekcji, wówczas przydaje się funkcja Examine().

Ostatnia aktualizacja: 20.12.2019 22:31:26 przez Hexmage960
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem