vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Wie übergibt man ein UDT-Array? 
Autor: Daniel
Datum: 21.04.02 19:29

Hi Lordchen,

der Fehler ist immer noch "ByRef argument type mismatch" und springt auf "nUDTPtr":

amount_of_Disk_Devices = ScanSCSI(nUDTPtr, True)

So hab ich`s im Ganzen:


Private Type SCSI_Info
Hald As Long 'Host Adapter ID
Target As Long 'SCSI Target
lPtrName As String 'Ptr auf String mit 64 Bytes
BlockSize As Long 'Size of one logical Block
Amount_of_Blocks As Long 'Anzahl of logical Blocks
End Type

Private Declare Function InitializeDLL Lib _
"DVimage.dll" Alias "Init_WNASPI32" () As Long

Private Declare Function ScanSCSI Lib _
"DVimage.dll" Alias "Scan_SCSI_Bus" _
(ByRef lptrSCSIInfo As String, ByVal nTrueFalse As Byte) As Long

Private Declare Sub SCSIPrevent Lib _
"DVimage.dll" Alias "SCSI_Prevent_Medium_Removeal" _
(ByRef lptrSCSIInfo As Long, ByVal nTrueFalse As Long)

Private Declare Function StoreImage Lib _
"DVimage.dll" Alias "Store_Image" _
(ByRef lptrSCSIInfo As Long, ByVal Drive As Long, _
ByRef sPtrFileName) As Integer

Private Declare Function MakeImage Lib _
"DVimage.dll" Alias "Make_Image" _
(ByRef lptrSCSIInfo As Long, _
ByVal Drive As Long, ByRef sPtrFileName) As Long

Private Declare Sub CopyMemory Lib _
"kernel32" Alias "RtlMoveMemory" _
(pDst As Any, pSrc As Any, ByVal ByteLen As Long)

' // Global Variables ... SCSI_Info mySCSI_Info[100];
' // Information about 100 (who owns them?) SCSI drives

Private mySCSI_info(100) As SCSI_Info

' // amount of SCSI Disk Devices connected to PC
Private amount_of_Disk_Devices As Long


Sub Main()

Dim rVal As Long, nUDTPtr As Long
Dim jn As Integer
Dim nDrive As Integer


'Zeiger auf UDT-Array
nUDTPtr = VarPtr(mySCSI_info(0))
' WNASPI32.DLL initialisieren

rVal = InitializeDLL()

If rVal = 0 Then

MsgBox "WNASPI32.DLL not present or no SCSI Host Adapters found!", vbCritical, "Abbruch"

Exit Sub

End If



' // scan SCSI Bus for Disk drives and store Disk Drive(s) information and amoun of Disk Drives

' // also prevent medium removal for all found disk devices

amount_of_Disk_Devices = ScanSCSI(nUDTPtr, True)



' // If no Disk Devices were found exit.......

If amount_of_Disk_Devices = 0 Then

MsgBox "No SCSI Disk Drives found!", vbExclamation, "Abbruch"

Exit Sub

End If



show_devices



' Im nachfolgenden wird gefragt, ob man eine Image erstellen

' will oder eine Image speichern will.

jn = MsgBox("Wollen Sie eine Image erstellen oder eine Image speichern. " & String(2, vbCrLf) & "Drücken Sie wenn Sie eine Image erstellen wollen." & vbCrLf & "Drücken Sie wenn Sie eine Image speichern wollen." & vbCrLf & "Drücken Sie wenn Sie die Aktion abbrechen wollen", vbQuestion + vbYesNoCancel, "Frage:")

If jn = vbCancel Then Exit Sub



If jn = vbYes Then 'Image erstellen

nDrive = InputBox("Bitte geben Sie die Nummer des Laufwerks ein:", "Laufwerkauswahl")

If nDrive < 0 Or nDrive > amount_of_Disk_Devices Then Exit Sub



' Im nachfolgenden ist ein Pfad "hardgecodet"

MakeImage nUDTPtr, nDrive, "C:test.sdi"

End If



If jn = vbNo Then 'Image in Drive speichern

nDrive = InputBox("Bitte die Nummer des Laufwerks an.", "Dateiangabe erwartet")

If nDrive < 0 Or nDrive > amount_of_Disk_Devices Then Exit Sub

StoreImage nUDTPtr, nDrive, "C:test.sdi"

End If

Dat is ne schwere Geburt !!
End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
DLL aufrufen mit VB48Daniel19.04.02 18:01
Re: DLL aufrufen mit VB229unbekannt19.04.02 19:10
Re: DLL aufrufen mit VB32Daniel19.04.02 20:32
Schicke mir mal den C-Quell247unbekannt19.04.02 20:36
Re: Schicke mir mal den C-Quell31Daniel19.04.02 21:45
Hi Für einen VS-Enterpriser ...208unbekannt19.04.02 21:52
Also:235unbekannt20.04.02 12:39
DANKE !!29Daniel20.04.02 15:13
Also hier die Umsetzung aus C++240unbekannt20.04.02 16:39
Au, die UDT zeigt ja auf long ...214unbekannt20.04.02 17:27
grrr Mouse zu schnell für Lordchen 208unbekannt20.04.02 17:29
Schon wieder DANKE!!31Daniel20.04.02 17:54
Na, es kommen bestimmt Probs .. (oT)196unbekannt20.04.02 18:05
Hast recht !!28Daniel20.04.02 19:34
Re: Hast recht !!195unbekannt21.04.02 01:35
Aber schon einen Sieg zu verzeichnen 198unbekannt21.04.02 01:45
Re: Aber schon einen Sieg zu verzeichnen 39Daniel21.04.02 02:20
Mit etwas, was ich noch nicht mal testen kann? support?212unbekannt21.04.02 02:55
Wie übergibt man ein UDT-Array?280unbekannt21.04.02 12:45
Re: Wie übergibt man ein UDT-Array?46Daniel21.04.02 19:29
Re: Wie übergibt man ein UDT-Array?26Daniel21.04.02 20:26
Womit Du Recht hast,267unbekannt21.04.02 21:22
hmm61Daniel21.04.02 21:53
Ganz einfach:209unbekannt21.04.02 22:30
Re: Ganz einfach:26Daniel21.04.02 22:53
Re: Ganz einfach:25Daniel22.04.02 08:28

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel