Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

# Packet.dll definitions and data structures
[Packet Driver API developer's manual]

## Data Structures
struct | NetType
| Network type structure. More...
struct | bpf_program
| A BPF pseudo-assembly program. More...
struct | bpf_insn
| A single BPF pseudo-instruction. More...
struct | bpf_stat
| Structure that contains a couple of statistics values on the current capture. More...
struct | bpf_hdr
| Packet header. More...
struct | dump_bpf_hdr
| Dump packet header. More...
struct | npf_if_addr
| Addresses of a network adapter. More...
struct | _ADAPTER_INFO
| Contains comprehensive information about a network adapter. More...
struct | _ADAPTER
| Describes an opened network adapter. More...
struct | _PACKET
| Structure that contains a group of packets coming from the driver. More...
struct | _PACKET_OID_DATA
| Structure containing an OID request. More...
## Defines
#define | PACKET_MODE_CAPT 0x0
| Capture mode.
#define | PACKET_MODE_STAT 0x1
| Statistical mode.
#define | PACKET_MODE_MON 0x2
| Monitoring mode.
#define | PACKET_MODE_DUMP 0x10
| Dump mode.
#define | PACKET_MODE_STAT_DUMP MODE_DUMP | MODE_STAT
| Statistical dump Mode.
#define | FILE_DEVICE_PROTOCOL 0x8000
#define | IOCTL_PROTOCOL_STATISTICS CTL_CODE(FILE_DEVICE_PROTOCOL, 2 , METHOD_BUFFERED, FILE_ANY_ACCESS)
#define | IOCTL_PROTOCOL_RESET CTL_CODE(FILE_DEVICE_PROTOCOL, 3 , METHOD_BUFFERED, FILE_ANY_ACCESS)
#define | IOCTL_PROTOCOL_READ CTL_CODE(FILE_DEVICE_PROTOCOL, 4 , METHOD_BUFFERED, FILE_ANY_ACCESS)
#define | IOCTL_PROTOCOL_WRITE CTL_CODE(FILE_DEVICE_PROTOCOL, 5 , METHOD_BUFFERED, FILE_ANY_ACCESS)
#define | IOCTL_PROTOCOL_MACNAME CTL_CODE(FILE_DEVICE_PROTOCOL, 6 , METHOD_BUFFERED, FILE_ANY_ACCESS)
#define | IOCTL_OPEN CTL_CODE(FILE_DEVICE_PROTOCOL, 7 , METHOD_BUFFERED, FILE_ANY_ACCESS)
#define | IOCTL_CLOSE CTL_CODE(FILE_DEVICE_PROTOCOL, 8 , METHOD_BUFFERED, FILE_ANY_ACCESS)
#define | pBIOCSETBUFFERSIZE 9592
| IOCTL code: set kernel buffer size.
#define | pBIOCSETF 9030
| IOCTL code: set packet filtering program.
#define | pBIOCGSTATS 9031
| IOCTL code: get the capture stats.
#define | pBIOCSRTIMEOUT 7416
| IOCTL code: set the read timeout.
#define | pBIOCSMODE 7412
| IOCTL code: set working mode.
#define | pBIOCSWRITEREP 7413
| IOCTL code: set number of physical repetions of every packet written by the app.
#define | pBIOCSMINTOCOPY 7414
| IOCTL code: set minimum amount of data in the kernel buffer that unlocks a read call.
#define | pBIOCSETOID 2147483648
| IOCTL code: set an OID value.
#define | pBIOCQUERYOID 2147483652
| IOCTL code: get an OID value.
#define | pATTACHPROCESS 7117
| IOCTL code: attach a process to the driver. Used in Win9x only.
#define | pDETACHPROCESS 7118
| IOCTL code: detach a process from the driver. Used in Win9x only.
#define | pBIOCSETDUMPFILENAME 9029
| IOCTL code: set the name of a the file used by kernel dump mode.
#define | pBIOCEVNAME 7415
| IOCTL code: get the name of the event that the driver signals when some data is present in the buffer.
#define | pBIOCSENDPACKETSNOSYNC 9032
| IOCTL code: Send a buffer containing multiple packets to the network, ignoring the timestamps associated with the packets.
#define | pBIOCSENDPACKETSSYNC 9033
| IOCTL code: Send a buffer containing multiple packets to the network, respecting the timestamps associated with the packets.
#define | pBIOCSETDUMPLIMITS 9034
| IOCTL code: Set the dump file limits. See the PacketSetDumpLimits() function.
#define | pBIOCISDUMPENDED 7411
| IOCTL code: Get the status of the kernel dump process. See the PacketIsDumpEnded() function.
#define | pBIOCSTIMEZONE 7471
| IOCTL code: set time zone. Used in Win9x only.
#define | Packet_ALIGNMENT sizeof(int)
| Alignment macro. Defines the alignment size.
#define | Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1))
| Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT.
#define | NdisMediumNull -1
#define | NdisMediumCHDLC -2
#define | NdisMediumPPPSerial -3
#define | DOSNAMEPREFIX TEXT("Packet_")
| Prefix added to the adapters device names to create the WinPcap devices.
#define | MAX_LINK_NAME_LENGTH 64
#define | NMAX_PACKET 65535
#define | ADAPTER_NAME_LENGTH 256 + 12
| Maximum length for the name of an adapter. The value is the same used by the IP Helper API.
#define | ADAPTER_DESC_LENGTH 128
| Maximum length for the description of an adapter. The value is the same used by the IP Helper API.
#define | MAX_MAC_ADDR_LENGTH 8
| Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API.
#define | MAX_NETWORK_ADDRESSES 16
| Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API.
#define | INFO_FLAG_NDIS_ADAPTER 0
| Flag for ADAPTER_INFO: this is a traditional ndis adapter.
#define | INFO_FLAG_NDISWAN_ADAPTER 1
| Flag for ADAPTER_INFO: this is a NdisWan adapter.
#define | INFO_FLAG_DAG_CARD 2
| Flag for ADAPTER_INFO: this is a DAG card.
#define | INFO_FLAG_DAG_FILE 6
| Flag for ADAPTER_INFO: this is a DAG file.
#define | ODS(_x)
| Macro to print a debug string. The behavior differs depending on the debug level.
#define | ODSEx(_x, _y)
| Macro to print debug data with the printf convention. The behavior differs depending on the debug level.
## Typedefs
typedef NetType | NetType
| Network type structure.
typedef npf_if_addr | npf_if_addr
| Addresses of a network adapter.
typedef WAN_ADAPTER_INT | WAN_ADAPTER
| Describes an opened wan (dialup, VPN...) network adapter using the NetMon API.
typedef WAN_ADAPTER * | PWAN_ADAPTER
| Describes an opened wan (dialup, VPN...) network adapter using the NetMon API.
typedef _ADAPTER_INFO | ADAPTER_INFO
| Contains comprehensive information about a network adapter.
typedef _ADAPTER_INFO * | PADAPTER_INFO
| Contains comprehensive information about a network adapter.
typedef _ADAPTER | ADAPTER
| Describes an opened network adapter.
typedef _ADAPTER * | LPADAPTER
| Describes an opened network adapter.
typedef _PACKET | PACKET
| Structure that contains a group of packets coming from the driver.
typedef _PACKET * | LPPACKET
| Structure that contains a group of packets coming from the driver.
typedef _PACKET_OID_DATA PACKET_OID_DATA * | PPACKET_OID_DATA
## Functions
LONG | PacketDumpRegistryKey (PCHAR KeyName, PCHAR FileName)
| Dumps a registry key to disk in text format. Uses regedit.

## Detailed Description

Packet32.h contains the data structures and the definitions used by packet.dll. The file is used both by the Win9x and the WinNTx versions of packet.dll, and can be included by the applications that use the functions of this library

## Define Documentation

#define ADAPTER_DESC_LENGTH 128

| Maximum length for the description of an adapter. The value is the same used by the IP Helper API. Definition at line 211 of file Packet32.h.

#define ADAPTER_NAME_LENGTH 256 + 12

| Maximum length for the name of an adapter. The value is the same used by the IP Helper API. Definition at line 210 of file Packet32.h. Referenced by PacketOpenAdapter(), and PacketOpenAdapterNPF().

#define DOSNAMEPREFIX TEXT("Packet_")

| Prefix added to the adapters device names to create the WinPcap devices. Definition at line 193 of file Packet32.h.

#define FILE_DEVICE_PROTOCOL 0x8000

| Definition at line 61 of file Packet32.h.

#define INFO_FLAG_DAG_CARD 2

| Flag for ADAPTER_INFO: this is a DAG card. Definition at line 221 of file Packet32.h. Referenced by PacketCloseAdapter(), PacketGetStats(), PacketGetStatsEx(), PacketOpenAdapter(), PacketSetBpf(), PacketSetBuff(), PacketSetMinToCopy(), PacketSetReadTimeout(), and PacketSetSnapLen().

#define INFO_FLAG_DAG_FILE 6

| Flag for ADAPTER_INFO: this is a DAG file. Definition at line 222 of file Packet32.h. Referenced by PacketCloseAdapter().

#define INFO_FLAG_NDIS_ADAPTER 0

| Flag for ADAPTER_INFO: this is a traditional ndis adapter. Definition at line 219 of file Packet32.h. Referenced by PacketIsDumpEnded(), PacketOpenAdapter(), PacketRequest(), PacketSendPacket(), PacketSendPackets(), PacketSetDumpLimits(), PacketSetDumpName(), PacketSetHwFilter(), and PacketSetNumWrites().

#define INFO_FLAG_NDISWAN_ADAPTER 1

| Flag for ADAPTER_INFO: this is a NdisWan adapter. Definition at line 220 of file Packet32.h. Referenced by PacketOpenAdapter(), and PacketSetMinToCopy().

#define IOCTL_CLOSE CTL_CODE(FILE_DEVICE_PROTOCOL, 8 , METHOD_BUFFERED, FILE_ANY_ACCESS)

| Definition at line 69 of file Packet32.h.

#define IOCTL_OPEN CTL_CODE(FILE_DEVICE_PROTOCOL, 7 , METHOD_BUFFERED, FILE_ANY_ACCESS)

| Definition at line 68 of file Packet32.h.

#define IOCTL_PROTOCOL_MACNAME CTL_CODE(FILE_DEVICE_PROTOCOL, 6 , METHOD_BUFFERED, FILE_ANY_ACCESS)

| Definition at line 67 of file Packet32.h.

#define IOCTL_PROTOCOL_READ CTL_CODE(FILE_DEVICE_PROTOCOL, 4 , METHOD_BUFFERED, FILE_ANY_ACCESS)

| Definition at line 65 of file Packet32.h.

#define IOCTL_PROTOCOL_RESET CTL_CODE(FILE_DEVICE_PROTOCOL, 3 , METHOD_BUFFERED, FILE_ANY_ACCESS)

| Definition at line 64 of file Packet32.h. Referenced by NPF_IoControl().

#define IOCTL_PROTOCOL_STATISTICS CTL_CODE(FILE_DEVICE_PROTOCOL, 2 , METHOD_BUFFERED, FILE_ANY_ACCESS)

| Definition at line 63 of file Packet32.h.

#define IOCTL_PROTOCOL_WRITE CTL_CODE(FILE_DEVICE_PROTOCOL, 5 , METHOD_BUFFERED, FILE_ANY_ACCESS)

| Definition at line 66 of file Packet32.h.

#define MAX_LINK_NAME_LENGTH 64

| Definition at line 194 of file Packet32.h. Referenced by PacketOpenAdapterNPF().

#define MAX_MAC_ADDR_LENGTH 8

| Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. Definition at line 212 of file Packet32.h.

#define MAX_NETWORK_ADDRESSES 16

| Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. Definition at line 213 of file Packet32.h. Referenced by pcap_lookupnet().

#define NdisMediumCHDLC -2

| Definition at line 99 of file Packet32.h.

#define NdisMediumNull -1

| Definition at line 98 of file Packet32.h.

#define NdisMediumPPPSerial -3

| Definition at line 100 of file Packet32.h.

#define NMAX_PACKET 65535

| Definition at line 195 of file Packet32.h.

#define ODS | ( | _x |  | ) |

| Value:
    { \
        FILE *f; \
        f = fopen("winpcap_debug.txt", "a"); \
        fprintf(f, "%s", _x); \
        fclose(f); \
    }
Macro to print a debug string. The behavior differs depending on the debug level. Definition at line 317 of file Packet32.h. Referenced by DllMain(), PacketAllocatePacket(), PacketGetAdapterNames(), PacketGetFileVersion(), PacketGetNetInfoEx(), PacketGetNetType(), PacketInstallDriver(), PacketIsDumpEnded(), PacketOpenAdapterNPF(), PacketSendPacket(), PacketSendPackets(), PacketSetDumpLimits(), PacketSetDumpName(), PacketSetHwFilter(), PacketSetMaxLookaheadsize(), PacketSetNumWrites(), and PacketSetReadEvt().

#define ODSEx | ( | _x,
|  | _y |  | ) |

| Value:
    { \
        FILE *f; \
        f = fopen("winpcap_debug.txt", "a"); \
        fprintf(f, _x, _y); \
        fclose(f); \
    }
Macro to print debug data with the printf convention. The behavior differs depending on the debug level. Definition at line 327 of file Packet32.h. Referenced by PacketGetAdapterNames(), PacketGetFileVersion(), PacketInstallDriver(), PacketOpenAdapter(), PacketOpenAdapterNPF(), and PacketRequest().

#define Packet_ALIGNMENT sizeof(int)

| Alignment macro. Defines the alignment size. Definition at line 93 of file Packet32.h.

#define PACKET_MODE_CAPT 0x0

| Capture mode. Definition at line 54 of file Packet32.h.

#define PACKET_MODE_DUMP 0x10

| Dump mode. Definition at line 57 of file Packet32.h. Referenced by pcap_live_dump().

#define PACKET_MODE_MON 0x2

| Monitoring mode. Definition at line 56 of file Packet32.h.

#define PACKET_MODE_STAT 0x1

| Statistical mode. Definition at line 55 of file Packet32.h.

#define PACKET_MODE_STAT_DUMP MODE_DUMP | MODE_STAT

| Statistical dump Mode. Definition at line 58 of file Packet32.h.

#define Packet_WORDALIGN | ( | x |  | ) | (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1))

| Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT. Definition at line 95 of file Packet32.h. Referenced by NPF_Read(), and PrintPackets().

#define pATTACHPROCESS 7117

| IOCTL code: attach a process to the driver. Used in Win9x only. Definition at line 80 of file Packet32.h.

#define pBIOCEVNAME 7415

| IOCTL code: get the name of the event that the driver signals when some data is present in the buffer. Definition at line 83 of file Packet32.h. Referenced by PacketSetReadEvt().

#define pBIOCGSTATS 9031

| IOCTL code: get the capture stats. Definition at line 73 of file Packet32.h. Referenced by PacketGetStats(), and PacketGetStatsEx().

#define pBIOCISDUMPENDED 7411

| IOCTL code: Get the status of the kernel dump process. See the PacketIsDumpEnded() function. Definition at line 87 of file Packet32.h. Referenced by PacketIsDumpEnded().

#define pBIOCQUERYOID 2147483652

| IOCTL code: get an OID value. Definition at line 79 of file Packet32.h. Referenced by PacketRequest().

#define pBIOCSENDPACKETSNOSYNC 9032

| IOCTL code: Send a buffer containing multiple packets to the network, ignoring the timestamps associated with the packets. Definition at line 84 of file Packet32.h.

#define pBIOCSENDPACKETSSYNC 9033

| IOCTL code: Send a buffer containing multiple packets to the network, respecting the timestamps associated with the packets. Definition at line 85 of file Packet32.h.

#define pBIOCSETBUFFERSIZE 9592

| IOCTL code: set kernel buffer size. Definition at line 71 of file Packet32.h. Referenced by PacketSetBuff().

#define pBIOCSETDUMPFILENAME 9029

| IOCTL code: set the name of a the file used by kernel dump mode. Definition at line 82 of file Packet32.h. Referenced by PacketSetDumpName().

#define pBIOCSETDUMPLIMITS 9034

| IOCTL code: Set the dump file limits. See the PacketSetDumpLimits() function. Definition at line 86 of file Packet32.h. Referenced by PacketSetDumpLimits().

#define pBIOCSETF 9030

| IOCTL code: set packet filtering program. Definition at line 72 of file Packet32.h. Referenced by PacketSetBpf().

#define pBIOCSETOID 2147483648

| IOCTL code: set an OID value. Definition at line 78 of file Packet32.h. Referenced by PacketRequest().

#define pBIOCSMINTOCOPY 7414

| IOCTL code: set minimum amount of data in the kernel buffer that unlocks a read call. Definition at line 77 of file Packet32.h. Referenced by PacketSetMinToCopy().

#define pBIOCSMODE 7412

| IOCTL code: set working mode. Definition at line 75 of file Packet32.h. Referenced by PacketSetMode().

#define pBIOCSRTIMEOUT 7416

| IOCTL code: set the read timeout. Definition at line 74 of file Packet32.h. Referenced by PacketSetReadTimeout().

#define pBIOCSTIMEZONE 7471

| IOCTL code: set time zone. Used in Win9x only. Definition at line 89 of file Packet32.h.

#define pBIOCSWRITEREP 7413

| IOCTL code: set number of physical repetions of every packet written by the app. Definition at line 76 of file Packet32.h. Referenced by PacketSetNumWrites().

#define pDETACHPROCESS 7118

| IOCTL code: detach a process from the driver. Used in Win9x only. Definition at line 81 of file Packet32.h.

## Typedef Documentation

typedef struct _ADAPTER ADAPTER

| Describes an opened network adapter. This structure is the most important for the functioning of packet.dll, but the great part of its fields should be ignored by the user, since the library offers functions that avoid to cope with low-level parameters Referenced by PacketOpenAdapterNPF().

typedef struct _ADAPTER_INFO ADAPTER_INFO

| Contains comprehensive information about a network adapter. This structure is filled with all the accessory information that the user can need about an adapter installed on his system.

typedef struct _ADAPTER * LPADAPTER

| Describes an opened network adapter. This structure is the most important for the functioning of packet.dll, but the great part of its fields should be ignored by the user, since the library offers functions that avoid to cope with low-level parameters

typedef struct _PACKET * LPPACKET

| Structure that contains a group of packets coming from the driver. This structure defines the header associated with every packet delivered to the application.

typedef struct NetType NetType

| Network type structure. This structure is used by the PacketGetNetType() function to return information on the current adapter's type and speed.

typedef struct npf_if_addr npf_if_addr

| Addresses of a network adapter. This structure is used by the PacketGetNetInfoEx() function to return the IP addresses associated with an adapter.

typedef struct _PACKET PACKET

| Structure that contains a group of packets coming from the driver. This structure defines the header associated with every packet delivered to the application. Referenced by PacketAllocatePacket().

typedef struct _ADAPTER_INFO * PADAPTER_INFO

| Contains comprehensive information about a network adapter. This structure is filled with all the accessory information that the user can need about an adapter installed on his system.

typedef struct _PACKET_OID_DATA PACKET_OID_DATA* PPACKET_OID_DATA

| Definition at line 306 of file Packet32.h. Referenced by NPF_IoControl(), NPF_RequestComplete(), PacketSetHwFilter(), and PacketSetMaxLookaheadsize().

typedef WAN_ADAPTER* PWAN_ADAPTER

| Describes an opened wan (dialup, VPN...) network adapter using the NetMon API. Definition at line 217 of file Packet32.h.

typedef struct WAN_ADAPTER_INT WAN_ADAPTER

| Describes an opened wan (dialup, VPN...) network adapter using the NetMon API. Definition at line 216 of file Packet32.h.

## Function Documentation

LONG PacketDumpRegistryKey | ( | PCHAR | KeyName,
|  | PCHAR | FileName
| ) |

  | Dumps a registry key to disk in text format. Uses regedit. Parameters:
  | KeyName | Name of the ket to dump. All its subkeys will be saved recursively.
  | FileName | Name of the file that will contain the dump.
Returns: If the function succeeds, the return value is nonzero. For debugging purposes, we use this function to obtain some registry keys from the user's machine. Let regedit do the dirt work for us Definition at line 408 of file Packet32.c. Referenced by DllMain().

documentation. Copyright (c) 2002-2003 Politecnico di Torino. All rights reserved.