Seite 1 von 1

externe DLL benutzen: HANDLE

Verfasst: 02.01.2012 16:00
von gbalzarek
Hallo Leute,

ich habe ein Prototypen-Problem.
Bisher benutze ich externe DLLs in dieser Weise (PB4.51):

Code: Alles auswählen

Prototype.i pReadBytes551014 (adresse.i)
...
ReadBytes551014.pReadBytes551014 = GetFunction (0, "ReadBytes551014")
...
test=ReadBytes551014(modadr)
Das funktioniert auch einwandfrei.

Jetzt möchte ich aber ein Programm schreiben, das einen Mikrocontroller von Microchip mit USB-Schnittstelle benutzt.
Den Treiber und die DLL stellt Microchip zum Download bereit. In der Header-Datei sind verschiedene Funktionsprototypen angegeben, die ich übernehmen will:

Code: Alles auswählen

extern "C" __declspec(dllexport)
HANDLE MPUSBOpen(DWORD instance,    // Input
                 PCHAR pVID_PID,    // Input
                 PCHAR pEP,         // Input
                 DWORD dwDir,       // Input
                 DWORD dwReserved); // Input <Future Use>

extern "C" __declspec(dllexport)
DWORD MPUSBRead(HANDLE handle,              // Input
                PVOID pData,                // Output
                DWORD dwLen,                // Input
                PDWORD pLength,             // Output
                DWORD dwMilliseconds);      // Input
Mein Problem ist: Im Source, der mitgegeben wurde, finde ich "HANDLE" nicht.
Die DLL wurde mit "Borland C++ Builder 6" erzeugt, was ich nicht habe. Vermutlich wird "HANDLE" dort in einer Header-Datei beschrieben. Im Netz habe ich leider nichts brauchbares gefunden.

Kennt das hier jemand und kann mir weiterhelfen?

Re: externe DLL benutzen: HANDLE

Verfasst: 02.01.2012 16:13
von Derren
Laut der Headerdatei ist doch Handle der Rückgabewert von MPUSBOpen()

Re: externe DLL benutzen: HANDLE

Verfasst: 02.01.2012 16:20
von ts-soft
Und bitte drauf achten, auch PrototypeC zu nutzen!

Re: externe DLL benutzen: HANDLE

Verfasst: 03.01.2012 13:13
von gbalzarek
@Derren: das ist richtig.

@ts-soft: Danke für den Hinweis.

@all: hat keiner mehr Borland Builder 6 ???

Re: externe DLL benutzen: HANDLE

Verfasst: 03.01.2012 13:20
von DarkDragon
typedef PVOID HANDLE: http://msdn.microsoft.com/en-us/library ... s.85).aspx
Nimm .i dafür (also den Datentyp Integer in PureBasic) oder eben einen Pointer, was in PB demselben Typ entspricht.

Re: externe DLL benutzen: HANDLE

Verfasst: 28.01.2012 18:28
von gbalzarek
Danke für den Hinweis auf die Integer-Variable. Funktioniert super.