target audience:

    people w/ no control over the DLL-source, unable to change behavior of DLL
    people who don’t want to pass an input-parameter to the DLL, which will be filled w/ the result in most other cases
    people who want to call a callback-function/sub inside Access

recommended reading:
http://msdn.microsoft.com/en-us/library/ms811463 or
http://oreilly.com/catalog/win32api/chapter/ch06.html

more reading:
http://blogs.msdn.com/b/ericlippert/archive/2003/09/12/52976.aspx
http://www.codeproject.com/KB/string/bstrsproject1.aspx

my working sample:

Option Compare Database
Option Explicit

Declare Sub WebGISConn_init Lib "P:\doswin\LDA\IPFLink\20110920\IPFLink.dll" Alias "IPFLink_init" (ByVal WebGISConn_CallBack As Long)
Declare Sub WebGISConn_showFeaturesInIMS Lib "P:\doswin\LDA\IPFLink\20110920\IPFLink.dll" Alias "IPFLink_showFeatureIDStringWithInterfaceInIMS" (ByVal feats As String, ByVal interf As String)

Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Declare Function lstrlenA Lib "kernel32" (ByVal lpString As Long) As Long
'
' testwrapper for easy call from "immediate window"
'
Public Sub testWebGIS()
    Call initWebGIS
    Call openWebGIS(428300001)
End Sub
'
' this SUB will be called from an external DLL
' e.g. clicked on a button in firefox w/ webgis
'
Public Sub WebGISConn_CallBack(ByVal interf As Long, ByVal feats As Long)
    
    Dim idList As String
    Dim layerInterface As String
        
    On Error Resume Next
    
    Debug.Print "dll is calling ... " & LPSTRtoBSTR(interf) & LPSTRtoBSTR(feats)
    '
    ' TODO: open form w/ data
    '
End Sub
'
' open object in browser w/ webgis
'
Public Sub openWebGIS(ByRef Id As Variant)
    Dim idList As String
    Dim layerInterface As String
   
    idList = CStr(Id)
    layerInterface = "LDA_obertaegigeDenkmale"
        
    Call WebGISConn_showFeaturesInIMS(idList, layerInterface)
End Sub
'
' init DLL
' register access-callbackfunction
'
Public Sub initWebGIS()
    Call WebGISConn_init(AddressOf WebGISConn_CallBack)
End Sub

'
' convert C-null-terminated string from DLL to vba BSTR string
'
Function LPSTRtoBSTR(ByVal lpsz As Long) As String
 
' Input: a valid LPSTR pointer lpsz
' Output: a sBSTR with the same character array
 
Dim cChars As Long
 
' Get number of characters in lpsz
cChars = lstrlenA(lpsz)
 
' Initialize string
LPSTRtoBSTR = String$(cChars, 0)
 
' Copy string
CopyMemory ByVal StrPtr(LPSTRtoBSTR), ByVal lpsz, cChars
 
' Convert to Unicode
LPSTRtoBSTR = Trim0(StrConv(LPSTRtoBSTR, vbUnicode))
 
End Function

Public Function Trim0(sName As String) As String
   ' Right trim string at first null.
   Dim x As Integer
   x = InStr(sName, vbNullChar)
   If x > 0 Then Trim0 = Left$(sName, x - 1) Else Trim0 = sName
End Function