Not quite, this is the VB declaration:
Private Declare iotsvc_Open Lib "dllname.dll" (pulHandle As Long, ByVal csTarget As String, pLayout As iotlayout_t) As Long
There is no such thing as type 'char' in VB6 and strings must ALWAYS be declared ByVal so that the pointer to the string is passed and not the pointer to the variable.