Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Napędy fizyczne
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004
Napędy fizyczne

Witam

Czy jest jakaś struktura (np. Enum.....) , która umożliwiłaby mi odczytanie wszystkich napędów FIZYCZNYCH tzn.

Dyski,stacje dyskietek i CDROMy.

Pozdrawiam


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

22-12-2004 16:39
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
mikmas
From Łódź Stadt




Typ: neutral
Postów: 772
Zarejestrowany: Apr 2003

Nie znam funkcji Enum, ale czy chodzi Ci o odczytanie, jakie są? Jeśli tak, to można to zrobić łopatologicznie - za pomocą drivelistbox


_____________________________________________
4C;65;70;69;65;6A;20;62;79;9C;20;73;69;EA;20;
62;61;72;64;7A;69;65;6A;20;73;6B;6F;6E;63;65;
6E;74;72;6F;77;61;B3;20;6E;61;20;6F;64;70;6F;
77;69;65;64;7A;69;2C;20;61;20;6E;69;65;20;6E;
61;20;72;6F;7A;73;7A;79;66;72;6F;77;79;77;61;
6E;69;75;20;3A;50

22-12-2004 19:41
Pokaż profil mikmas  Wyślij email do mikmas   Odwiedź stronę mikmas       3632553
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Hmmm - chodzi mi o napędy fizyczne a nie o logiczne


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

22-12-2004 20:49
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
mikmas
From Łódź Stadt




Typ: neutral
Postów: 772
Zarejestrowany: Apr 2003

I tak nie rozumiem ,


_____________________________________________
4C;65;70;69;65;6A;20;62;79;9C;20;73;69;EA;20;
62;61;72;64;7A;69;65;6A;20;73;6B;6F;6E;63;65;
6E;74;72;6F;77;61;B3;20;6E;61;20;6F;64;70;6F;
77;69;65;64;7A;69;2C;20;61;20;6E;69;65;20;6E;
61;20;72;6F;7A;73;7A;79;66;72;6F;77;79;77;61;
6E;69;75;20;3A;50

23-12-2004 00:26
Pokaż profil mikmas  Wyślij email do mikmas   Odwiedź stronę mikmas       3632553
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Mikmas:

Napęd logiczny:
Partycje, urządzenia "wytwarzane" przez sterowniki itd.:
A:\ <Floppy 1>
B:\ <Floppy 2>
C:\ <Prim.Partition>
D:\ <Prim.Partition>
E:\ <Sec.Partition>
F:\ <CD-ROM>
G:\ <VIRTUAL CD>
H:\ <RAMDISK>

Napędy fizyczne:
Rzeczywiście istniejące urządzenia, dyski, napędy dyskietek, napędy CD - to, co rzeczywiscie znajduje się w komputerze:
Floppy 3.5"
Floppy 5.2"
HDD-1
HDD-2
CD-ROM

---

DJK: Narazie nie mam pomysłu, ale postaram się coś wyskrobać i może napiszę... jęśli przez godzinę-dwie nie odpowiem, to znaczy, że nie wymyśliłem nic .


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

23-12-2004 03:10
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Na stronach
http://blackbeltvb.com/ w dziale "File/Disk Operations" jest przykład. Może po prostu "wstawię " go tutaj będziesz od razu widział czy o to Ci chodziło (bo nie wiem co masz na myśli mówiąc: odczytanie, struktura):


' Written by Matt Hart
' Copyright 1999 by Matt Hart
'
' This software is FREEWARE. You may use it as you see fit for
' your own projects but you may not re-sell the original or the
' source code. Do not copy this sample to a collection, such as
' a CD-ROM archive. You may link directly to the original sample
' using "http://blackbeltvb.com/getdrvt.htm";
'
' No warranty express or implied, is given as to the use of this
' program. Use at your own risk.
'

' GetDriveType return values


Const DRIVE_REMOVABLE = 2
Const DRIVE_FIXED = 3
Const DRIVE_REMOTE = 4
Const DRIVE_CDROM = 5
Const DRIVE_RAMDISK = 6

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Sub Form_Load()
    Dim i As Long, a As String, k As Long
    For i = 0 To 25
        a = Chr$(i + 65) & ":"
        k = GetDriveType(a)
        Select Case k
            Case DRIVE_REMOVABLE: List1.AddItem Left$(a, 1) & " is a removable drive"
            Case DRIVE_FIXED: List1.AddItem Left$(a, 1) & " is a hard/non-removable drive"
            Case DRIVE_REMOTE: List1.AddItem Left$(a, 1) & " is a remote/network drive"
            Case DRIVE_CDROM: List1.AddItem Left$(a, 1) & " is a CD-ROM drive"
            Case DRIVE_RAMDISK: List1.AddItem Left$(a, 1) & " is a RAM drive"
        End Select
    Next
End Sub



ale widzę, że źródło powyższego jest u samego Billa:

http://support.microsoft.com/kb/q161300/

a tutaj jest lista "różności", ale to trochę "jakby stare" (też może się przyda...):

http://www.codeguru.com/resources/Files/Drive/

[Post edytowany dnia 23-12-2004 08:43 przez karolinavb]


_____________________________________________
Karolina

23-12-2004 08:24
Pokaż profil karolinavb  Wyślij email do karolinavb   
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Do karolinyvb - ten przykłąd niestety to nie to bo sprawdza on typy urządzeń po dyskach logicznych czyli gdy mam jeden dysk twardy, na którym będą dwie partycje to pokaże mi że są dwa dyski a mi chodzi o coś takiego np.

1. Stacja dyskietek
2. Seagate ST801345
3. LITE-ON 522452SA

a nie  A: C: D: E: itd.

Znam jeden sposób - odczytanie informacji z rejestru ale jest jeden problem - w rejestrze znajdują się informacje o dyskach, które były obecne w kmpie a w rzeczywistości już ich nie ma - info z REG nie są usuwane po odłączeniu urządzenia. To sprawia, że gdybym tak to odczytywał to miałbym nieprawdziwe informacje

Chciałem dodać że informacje z rejestru, o których piszę są także wykorzystywane do wyświetlania informacji w Menadżerze urządzeń w Panelu Sterowania, tylko że nie mam pojęcia w jaki sposób jest sprawdzane że dane urządzenie naprawdę istnieje bo mam wpisane informacje o CD-ROMie który kiedyś był podłączony a Menadzer go nie wyświetla czyli prawidłowo - szukałem jakiegoś klucza ale nie mam już pomysłów

[Post edytowany dnia 23-12-2004 11:26 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

23-12-2004 11:15
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Podejrzewam, zę menedżer urządzeń ma przede wszystkim dostęp bezpośrednio do sterownikó tych urządzeń. Spod VB można to zrobić na dwa sposoby - funkcją DeviceIOControl - jako urządzenie podajac vwin32 (wtedy ma się do dyspozycji większość przerwań) i DeviceIOControl wysyłajac komendy do sterownikó już samych urządzeń. W pierwszym przypadku trzeba wiedzieć, którego przerwania użyć i co ustawić w rejestrach procesora, w drugim - jakie są nazwy urządzeń (ale nie to, co jest na obudowie, ale nazwę sterownika).


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

23-12-2004 20:42
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Na 100% Menadżer urządzeń korzysta z rejestru a nie ze sterowników - sprawdziłem to, a co do DeviceIO to nie sprawdzałem ale nie wydaje mi się zeby to pomogło

Problem po cześci rozwiązany ale nadal czekam na propozycje

[Post edytowany dnia 23-12-2004 23:44 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

23-12-2004 23:42
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

1) Skąd wiesz, że nie korzysta ze sterowników?
2) Dlaczego DeviceIOControl ma nie pomóc? Pod WinNT działa, więc nie wiem skąd ten wniosek .


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

24-12-2004 11:52
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

bo sprawdziłem - metodą prób i błędów - w 98 menadżer pobiera informacje z Danych dynamicznych  następnie sprawdza czy klucze istnieją - jeżeli nie to nie pokazuje urządzenia - wystarczy zmienić nazwę np. "SCSI" na "SCSIbla" i w menadzerze juz nie będzie informacji o urządzeniach SCSI - można też zmienić nazwę klasy np. z CDROM na CDROMbla - to samo

W XP jest trochę inaczej ale też rejestr.

Chciałem pod 98 odpalić sample'a z DvcIOCTRL ale nie działał - być moze sampel był do bani - a tak spytam - co niby zwraca ta funckja ?


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

24-12-2004 12:10
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Aha.

Co do sampla - nie wiem, który sprawdzałeś, ale pewnie nie działał dlatego, ze był pod WinNT, nie Win9x. W Win9x są inne nazwy urządzeń niż w NT (a tym samym również XP i reszcie przedstawicieli rodziny NT).

Funkcja zwraca wartość różną od zera, jeśli została wykonana poprawnie, 0 - jeśli się nie wykonała poprawnie.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

24-12-2004 14:00
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

no tylko jak ona mi ma pomóc w identyfikacji wszystkich urządzeń


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

24-12-2004 14:07
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Dokładnie - nie wiem . Ale w teorii - możesz np. odwoływać się do jakiejś grupy urządzeń i sprawdzać, które z nich są dyskami twardymi lub uzyć wspomnianego już urządzenia "vwin32" i poprzez któreś przerwanie prawdopodobnie dałoby się uzyskać poszukiwane przez ciebie informacje.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

24-12-2004 16:25
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Chyba jednak pozostanę przy rejestrze


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

24-12-2004 16:30
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

ok, ok. ja to tylko podałem jako przykład . Sam nie mam pomysłu, jak to dokładnie zrobić.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

24-12-2004 16:40
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Rozumiem - lepsza jakaś rada niż nic


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

24-12-2004 16:42
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
Wszystkich odpowiedzi: 16 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1