<DllImport("dnsapi", EntryPoint:="DnsQuery_W", CharSet:=CharSet.Unicode, SetLastError:=True, ExactSpelling:=True)> _ Private Shared Function DnsQuery(<MarshalAs(UnmanagedType.VBByRefStr)> _ ByRef pszName As String, ByVal wType As QueryTypes, ByVal options As QueryOptions, ByVal aipServers As Integer, ByRef ppQueryResults As IntPtr, ByVal pReserved As Integer) As Integer End Function <DllImport("dnsapi", CharSet:=CharSet.Auto, SetLastError:=True)> _ Private Shared Sub DnsRecordListFree(ByVal pRecordList As IntPtr, ByVal FreeType As Integer) End SubThis seemed to do the trick. Now of course, I don't know why, because I thought DLLImport and Declare was the same thing in essence. Yet apparently, DLLImport worked whereas Declare did not.