vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 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

VB.NET - Fortgeschrittene
Unmanaged DLL Callback in VB.net 
Autor: Dura
Datum: 26.03.10 08:07

Hallo,

ich muss eine unmanaged dll ansprechen, die in Delphi geschrieben wurde. Die Rückgaben der dll sollen als Async Callback geschehen. Im Handbuch zu der dll steht folgendes:

setCallback(A_Callback)

Parameter:
A_Callback

Type:
Funktionszeiger

Beschreibung:
Zeiger auf eine Funktion mit folgender Struktur
CommandReply(cmd:TCommand)

Struktur von
TCommand:
ID int(32)
Command int(32)
Value int(32)
ByteArr byte[16]

Mit diesen Angaben habe ich mir folgende Funktionen zusammengebaut:

 
 
    Public Structure RegelStruktur
        Public iID As UInt32
        Public icommand As UInt32
        Public iValue As UInt32
        Public ibyteArr As Char()
    End Structure
 
 
 
    Dim Antwort As Array
    Dim Regel As New Regel7
 
    Public Declare Sub dllSetCallback Lib "Regel.dll" Alias "setCallback" ( _
      ByVal Regeldel As CommandReply)
    Delegate Sub CommandReply(ByVal RegelIntPtr As IntPtr)
 
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        Regel.Init()
        dllSetCallback(AddressOf GetCallback)
    End Sub
 
    ''' <summary>
    ''' Funktion die von der DLL Aufgerufen werden soll
    ''' </summary>
    ''' <param name="RegelIntPtr">Zeiger auf das Struct, dass die 
    ' Rückgabewerte enthält</param>
    ''' <remarks></remarks>
    Sub GetCallback(ByVal RegelIntPtr As IntPtr)
 
        'RegelIntPtr = Marshal.AllocHGlobal(1024)
        Dim A As RegelStruktur
        ReDim A.ibyteArr(15)
        Marshal.PtrToStructure(RegelIntPtr, A)
 
    End Sub
Leider steht im RegelIntPtr immer nur eine 1, wenn ich ihn beim debuggen betrachte. Normalerweise muss man IntPtr mit Marshal ja Speicher zuweisen, allerdings weiß ich nicht, wie ich das mache, wenn er als Parameter übergeben wird. Ich hoffe, dass mir hier jemand helfen kann.
Danke schonmal.

Beitrag wurde zuletzt am 26.03.10 um 08:10:09 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Unmanaged DLL Callback in VB.net3.324Dura26.03.10 08:07
Re: Unmanaged DLL Callback in VB.net2.365ModeratorDaveS26.03.10 09:35
Re: Unmanaged DLL Callback in VB.net2.253Dura26.03.10 10:14
Re: Unmanaged DLL Callback in VB.net2.123ModeratorDaveS26.03.10 10:23
Re: Unmanaged DLL Callback in VB.net2.167Dura26.03.10 10:41
Re: Unmanaged DLL Callback in VB.net2.112ModeratorDaveS26.03.10 11:05
Re: Unmanaged DLL Callback in VB.net2.083Dura26.03.10 11:57
Re: Unmanaged DLL Callback in VB.net2.225Dura29.03.10 09:05
Re: Unmanaged DLL Callback in VB.net2.067ModeratorDaveS29.03.10 09:30
Re: Unmanaged DLL Callback in VB.net2.105Dura29.03.10 09:50
Re: Unmanaged DLL Callback in VB.net2.024ModeratorDaveS29.03.10 10:04
Re: Unmanaged DLL Callback in VB.net2.116Dura29.03.10 10:39
Re: Unmanaged DLL Callback in VB.net1.999ModeratorDaveS29.03.10 10:53
Re: Unmanaged DLL Callback in VB.net2.032Dura29.03.10 11:32
Re: Unmanaged DLL Callback in VB.net2.030ModeratorDaveS29.03.10 11:42
Re: Unmanaged DLL Callback in VB.net1.985Dura29.03.10 14:36
Re: Unmanaged DLL Callback in VB.net2.058ModeratorDaveS29.03.10 15:25
Re: Unmanaged DLL Callback in VB.net2.022Dura30.03.10 09:49
Re: Unmanaged DLL Callback in VB.net2.067ModeratorDaveS30.03.10 10:44
Re: Unmanaged DLL Callback in VB.net2.034Dura30.03.10 12:54

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