Re: Re: STATIC FILTER using VB

Home Forums Discussions Support STATIC FILTER using VB Re: Re: STATIC FILTER using VB

#7150
couttsj
Participant

    I finally got around to looking at this issue, and I have located the problem with the filter. In VB, the lower array boundary defaults to 0, unless the programmer specifically sets the lower boundary to 1 with the Option Base Statement in each and every module. The VB example “modDecl_Ndisapi.bas” defines the Type IP_V4_FILTER as:

    Public Type IP_V4_FILTER
    m_ValidFields As Long
    m_SrcAddress As IP_ADDRESS_V4
    m_DestAddress As IP_ADDRESS_V4
    m_Protocol As Byte
    Padding(3) As Byte
    End Type

    Because the lower limit is zero, “Padding” is defined as a 4 byte array. It should be defined as:

    Public Type IP_V4_FILTER
    m_ValidFields As Long
    m_SrcAddress As IP_ADDRESS_V4
    m_DestAddress As IP_ADDRESS_V4
    m_Protocol As Byte
    Padding(1 To 3) As Byte
    End Type

    The same is true of Type ETH_802_3_FILTER:

    Public Type ETH_802_3_FILTER
    m_ValidFields As Long
    m_SrcAddress(1 To ETHER_ADDR_LENGTH) As Byte
    m_DestAddress(1 To ETHER_ADDR_LENGTH) As Byte
    m_Protocol As Integer
    Padding As Integer
    End Type

    The end result was that each filter was 3 bytes too long (119 instead of 116).

    J.A. Coutts