vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB & Windows API
Funktion aus DLL verwenden (Protected Stroe: pstorec.dll) 
Autor: koskid
Datum: 02.10.04 00:30

Hi!

Ich möchte aus der DLL "pstorec.dll" (im system32 verzeichnis) die Funktion "PStoreCreateInstance" verwenden.
Dazu muss ich, nachdem was ich bisher gelesen habe,

1. die dll laden mit "LoadLibrary",
2. mit "GetProcAddress" den Pointer auf die Adresse der Funktion ermitteln,
3. die Funktion aufrufen, und
4. schließlich die dll mit "FreeLibrary" wieder freigeben.

Doch das Aufrufen der Funktion klappt nicht, weil ich mit den Übergabeparametern nicht zurecht komme.
Laut MSDN ist die Funktion folgendermaßen strukturiert:



HRESULT PStoreCreateInstance(
  IPStore** ppProvider,
  PST_PROVIDERID* pProviderID,
  void* pReserved,
  DWORD dwFlags
);
(Quelle: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devnotes/winprog/pstorecreateinstance.asp)

Zitat:

Parameters
ppProvider
[out] A pointer to the retrieved interface pointer for the storage provider. When you finish using the interface, decrement its reference count by calling its IUnknown::Release method. This parameter cannot be NULL.
pProviderID
[in] A pointer to the GUID that identifies the storage provider. If this parameter is NULL, then the base storage provider is used.
pReserved
[in] Reserved; must be NULL.
dwFlags
[in] Reserved; must be zero.
Return Values
The return value is an HRESULT. A value of S_OK indicates the function was successful.



Aber ich kann keine mir bekannten Variablen-Typen von VB erkennen. Ist "IPStore **" etwa ein Datentyp? Und das Ergebnis "HRESULT" ist mir in VB auch unbekannt.

Ich habe die Funktion einfach mal in einem Modul folgerndermaßen deklariert:
Public Declare Function PStoreCreateInstance Lib "pstorec.dll" (ByVal _
  ppProvider As Long, ByVal pProviderID As Long, ByVal pReserved As Long, ByVal _
  dwFlags As Long) As Long
In meinem VB-Sub versuche ich dann die oben genannten Schritte durchzuführen:
Dim myLibrary As Long
Dim fctPtr As Long
Dim fctCall As Long
 
myLibrary = LoadLibrary(App.Path & "\pstorec.dll")
 
If (myLibrary <> 0) Then
    fctPtr = GetProcAddress(myLibrary, "PStoreCreateInstance")
    If (fctPtr <> 0) Then
 
        'Funktionsaufruf, der scheitert:
        fctCall = PStoreCreateInstance(PStore, 0&, 0&, 0&)
 
    End If
End If
 
FreeLibrary myLibrary
Als fctPtr wird 1581862525 zurückgegeben, das könnte ja eine realistische Adresse zur Funktion sein.

fctCall gibt allerdings -2147024809 zurück. Dies scheint ein Fehlercode zu sein....


Wie komme ich nun bloß an die korrekte Deklaration der Funktion, bzw den korrekten Aufruf :/
Könnt ihr mir bei meinem Problem helfen?

Vielen Dank und Gruß,

Stefan

mov ah, 4ch
int 21h

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Funktion aus DLL verwenden (Protected Stroe: pstorec.dll)1.880koskid02.10.04 00:30
Re: Funktion aus DLL verwenden (Protected Stroe: pstorec.dll...1.143ModeratorMartoeng08.10.04 15:06
Re: Funktion aus DLL verwenden (Protected Stroe: pstorec.dll...1.099koskid08.10.04 15:58
Re: Funktion aus DLL verwenden (Protected Stroe: pstorec.dll...1.032ModeratorMartoeng08.10.04 16:15
Re: Funktion aus DLL verwenden (Protected Stroe: pstorec.dll...1.014koskid08.10.04 16:19
Re: Funktion aus DLL verwenden (Protected Stroe: pstorec.dll...1.089ModeratorMartoeng08.10.04 16:41

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-2024 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