How can use LONGLONG type of C++ Dll in 'Declare Function' statement?

Z

Zoo

Hi,
I have a dll. I want to use a function in the dll on Excel VBA.
The fuction is below.

int GetDiskSpaceLeft(DWORD dwID, LONGLONG *lpllSpace);

If this were "int GetDiskSpaceLeft(DWORD dwID, LONG *lpllSpace);",
I knew how to use that.
Private Declare Function GetDiskSpaceLeft lib 'xx.dll' (ByVal dwID as Long,
ByRef lSpace as Long)

However it's not "Long", but "LongLong"

How can I use the dll function?
 
G

Guest

One really quick'n'dirty solution I saw posted on a MSDN webpage is to use
the VB datatype Currency instead of LongLong, but you then have to remember
to scale it by a factor 10,000 as well. The snippet below is taken from the
following webpage:


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnovba01/html/Lightweight.asp

Surely, there must be cleaner ways of implementing support for LongLong, so
I'll keep on looking, and when I find something I'll post it here...

Cheers,
/MP

=================================================

Private Declare Function GetDiskFreeSpaceEx _
Lib "kernel32" Alias "GetDiskFreeSpaceExA" _
(ByVal lpRootPathName As String, _
lpFreeBytesAvailableToCaller As Currency, _
lpTotalNumberOfBytes As Currency, _
lpTotalNumberOfFreeBytes As Currency) As Long
Private Sub DiskInfo()
Dim cuAvailable As Currency
Dim cuTotal As Currency
Dim cuFree As Currency

Call GetDiskFreeSpaceEx("C:\", cuAvailable, _
cuTotal, cuFree)
Debug.Print "Disk space info" & vbCr & _
"Available : "; _
FormatByteSize(cuAvailable * 10000) & vbCr & _
"Total : "; _
FormatByteSize(cuTotal * 10000) & vbCr & _
"Free : "; _
FormatByteSize(cuFree * 10000) & vbCr & _
"Used : "; _
FormatByteSize((cuTotal - cuFree) * 10000)
End Sub

=================================================
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top