Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 243070 (4506)
  Suchen
 Zurück zur Übersicht
 AutorThema: Lesen / Schreiben von Sektoren einer Diskette
Stefan Schnell
Datum:31.03.02 19:06 Antwortenals Email verschicken (mail@stschnell.de) 


Hallo Community,
früher gab es mal unter DOS einen Interrupt 13h mit der Funktion 02h und 03h, direktes Lesen oder Schreiben von Spuren und Sektoren einer Diskette. Gibt es eine ähnliche Funktion auch unter Profan / Windows? Mein Ziel ist es, die Seriennummer einer Diskette direkt zu manipulieren.
Danke für Eure Antworten.
Tschüss
Stefan Schnell



Stefan Schnell
Datum:05.04.02 20:22 Antwortenals Email verschicken (mail@stschnell.de) 


Hallo Community,
habe einiges gelesen, bin wohl auf einem Weg, komme aber nicht so recht weiter, kennt von Euch einer die WinAPI-Funktion DeviceIOControl? Irgendwie kann man damit, bei Übergabe des entsprechenden Parameters, Disketten lesen, formatieren, wohl auch direkt auf den ParallelPort zugreifen. Insgesamt ist diese Funktion aber nicht so gut dokumentiert.
Mal sehen...
Tschüss
Stefan Schnell



Gerhard Putschalka
Datum:06.04.02 08:57 Antwortenals Email verschicken (g.putschalka@utanet.at) 


Hallo Stefan,
in meinem Fundus habe ich ein Beispiel von Richard Maurukas gefunden. Du kannst es unter
http://members.telering.at/g.putschalka/lwinform.zip
herunterladen. Es ist aber nur kurze Zeit auf meiner HP verfügbar.
Mfg. Gerhard.


spiderman
Datum:06.04.02 10:39 Antwortenals Email verschicken  


Ich hab da was älteres aus der PSP gefunden :)

' PRFellow-Vorlage
' Autor: Thomas Hölzer
' Seriennummer einer Disk nur unter Win 9x (nicht NT!) schreiben
' Benutzung auf eigene Gefahr!
' Voreingestellt ist LW A:
' Benutzen Sie diesen Code nur, nachdem Sie eine
' Testdiskette ohne Schreibschutz in LW A: eingelegt haben
' Vorsicht: Die Seriennummer von Festplatten lassen sich ebenfalls schreiben
' Das kann Probleme bei Garantiefällen geben!

Def CloseHandle(1) !"KERNEL32","CloseHandle"
Def CreateFile(7) !"KERNEL32","CreateFileA"
Def DeviceIoControl(8) !"KERNEL32","DeviceIoControl"
Def FillStringNull$(1) Translate$(Space$(@%(1)),Chr$(32),Chr$(0))

' DOS-Interrupt $21 in Win32
Declare VWIN32_DIOC_DOS_IOCTL%
Let VWIN32_DIOC_DOS_IOCTL%=1

' Weitere Deklarationen und Initialisierungen
Declare Vxd&,Device#,Registers#,MediaData#,InOutPut#
Declare Fill$
Dim Device#,14
Dim Registers#,28
Dim MediaData#,8
Dim InOutput#,4

' Die Strukturen sicherheitshalber mit Nullen initialisieren
Let fill$=FillStringNull$(28)
String Registers#,0=fill$
String MediaData#,0=fill$
String InOutPut#,0=fill$

' Die Seriennummer einsetzen
Long MediaData#,2=12345

'Ins EAX-Register DOS-Funktion $440D:
Long Registers#,12=$440D
' EBX - das Laufwerk (0=Aktuelles, 1 = A:,3= C: usw.):
Long Registers#,0=1 'LW A:
' ECX - Unterfunktion (Set Media ID):
Long Registers#,8=$46
' EDX - Struktur mit Datenträgerinfo - hier nur mit Seriennummer:
Long Registers#,4=MediaData#

' Jetzt gehts wirklich los
' Virtuellen Gerätetreiber ansprechen (*vwin32 ist intern in vmm32.vxd)

String Device#,0=Add$("\\\\.\\vwin32",Chr$(0))
Let Vxd&=CreateFile(Device#,$40000000,3,0,3,128,0)

' Ist der Treiber zur Zusammenarbeit bereit?

If Neq(Vxd&,-1)
' Hier wird geschrieben
If Equ(0,\
DeviceIoControl(Vxd&,VWIN32_DIOC_DOS_IOCTL%,Registers#,28,Registers#,28,Mediadata#,0))
MessageBox("Fehler bei DeviceIoControl!","Fehler! - Seriennummer wurde nicht geschrieben",16)
Else
Let fill$="Seriennummer geschrieben für Disk", Chr$(Add(Long(Registers#,0),64));":"
MessageBox(fill$,"Info",64)
EndIf
Else
MessageBox("Ungültiges VXD-Handle","Abbruch",16)
EndIf

' Aufräumen
CloseHandle(Vxd&)
Dispose Device#
Dispose Registers#
Dispose MediaData#
Dispose InOutPut#
WaitInput



Stefan Schnell
Datum:06.04.02 14:29 Antwortenals Email verschicken (mail@stschnell.de) 


Hallo Gerhard und Spiderman,
danke für Eure Ansätze, habe sie downgeloaded bzw. gesichert.
Werde meine Erfahrungen hier kurz kundtun.
Tschüss
Stefan Schnell


Roland G. Hülsmann
Datum: 06.04.02 16:19 Antwortenals Email verschicken (rgh-soft@t-online.de) 


Hallo Spidermann,

ich möchte Dich bitten folgende drei Punkte zu beachten, die in den Forumsregeln unmißverständlich stehen:

1. sind hier nur Postings mit wirklichem Namen gestattet!
2. sind nur Postings mit existierender eMail-Adresse gestattet!
3. weiß ich zufällig, daß eine Weitergabe copyright-geschüzter Vorlagen als Text aus PRFellow NICHT gestattet ist, und somit Urheberrecht verletzt. Ein Hinweis auf Vorlagen ist natürlich gestattet. Weiteres findest Du in der Hilfe zu PRFellow. (Das gilt im Übrigen für jegliche Freeware oder Shareware: Das Urheberrecht bleibt beim Autor, seine der Software beigefügten Copyright-Bestimmungen sind bindend!)

Ich bitte Dich also, Dich bei künftigen Postings an die Forumsregeln zu halten! Danke!

Gruß
Roland




 Zurück zur Übersicht