On 2007-02-24, Terry Olsen <to******@hotmail.comwrote:
Trying to use AddPortEx but I'm getting an error. I modified the code I
found that Randy Birch did for VB6.
Public Structure PORT_INFO_1
Dim pPortName As String
End Structure
Public Declare Function AddPortEx Lib "winspool.drv" Alias "AddPortExA"
(ByVal pName As String, ByVal pLevel As Integer, ByVal lpBuffer As Object,
ByVal pMonitorName As String) As Integer
Dim PortInfo1 As PORT_INFO_1
PortInfo1.pPortName = FilePath
Dim x As Integer = AddPortEx(Nothing, 1, PortInfo1, "Local Port")
<--Exception thrown here
The error i'm getting is "Value does not fall within the expected range"
Looking for help getting this to work.
Thanks.
I can't find any information on AddPortEx. The closest I can find is a
definition for AddPortEx that looks different from the above declare, and was
made obolete with NT4. That funciton looks like:
Public Auto Function AddPortEx Lib "winspool.drv" ( _
ByVal hMonitor As IntPtr,
ByVal pName As String, _
ByVal Level As Integer, _
ByRef lpBuffer As PORT_INFO_1, _
ByVal lpMonitorName As String) As Boolean
So, my advice to you... Declare the function Auto and loose the alias. That
isn't needed in VB.NET for A/W functions.
You should declare the PORT_INFO_1 function like:
<StructLayout (StructLayout := LayoutKind.Sequential, CharSet:=CharSet.Auto)_
Public Structure PORT_INFO_1
Public pPortName As String
End Structure
Anyway, calling it:
If AddPortEx (IntPtr.Zero, Nothing, 1, PortInfo1, "Local Port") Then
'Do cool stuff
Else
' don't do cool stuff
End If
HTH,
--
Tom Shelton