windows-nt/Source/XPSP1/NT/net/inc/ddwanarp.h
2020-09-26 16:20:57 +08:00

348 lines
8 KiB
C

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
private\inc\ddwanarp.h
Abstract:
Revision History:
Gurdeep Singh Pall 7/20/95 Created
--*/
#ifndef __DDWANARP_H__
#define __DDWANARP_H__
#ifndef ANY_SIZE
#define ANY_SIZE 1
#endif
#define WANARP_SERVICE_NAME_W L"WANARP"
#define WANARP_SERVICE_NAME_A "WANARP"
#define WANARP_SERVICE_NAME_T TEXT("WANARP")
//////////////////////////////////////////////////////////////////////////////
// //
// Device Name - this string is the name of the device. It is the name //
// that should be passed to NtCreateFile when accessing the device. //
// //
//////////////////////////////////////////////////////////////////////////////
#define DD_WANARP_DEVICE_NAME_W L"\\Device\\WANARP"
#define DD_WANARP_DEVICE_NAME_A "\\Device\\WANARP"
#define DD_WANARP_DEVICE_NAME_T TEXT("\\Device\\WANARP")
//////////////////////////////////////////////////////////////////////////////
// //
// Win32 Name - This is the (Unicode and NonUnicode) name exposed by Win32 //
// subsystem for the device. It is the name that should be passed to //
// CreateFile(Ex) when opening the device. //
// //
//////////////////////////////////////////////////////////////////////////////
#define WANARP_DOS_NAME_W L"\\\\.\\WANARP"
#define WANARP_DOS_NAME_A "\\\\.\\WANARP"
#define WANARP_DOS_NAME_T TEXT("\\\\.\\WANARP")
#define FILE_DEVICE_WANARP 0x00009001
#define WANARP_MAX_DEVICE_NAME_LEN 256
#define _WANARP_CTL_CODE(function, method, access) \
CTL_CODE(FILE_DEVICE_WANARP, function, method, access)
#define MIN_WANARP_CODE 0
#define NOTIFICATION_CODE (MIN_WANARP_CODE)
#define ADD_INTERFACE_CODE (NOTIFICATION_CODE + 1)
#define DELETE_INTERFACE_CODE (ADD_INTERFACE_CODE + 1)
#define CONNECT_FAILED_CODE (DELETE_INTERFACE_CODE + 1)
#define GET_IF_STATS_CODE (CONNECT_FAILED_CODE + 1)
#define DELETE_ADAPTERS_CODE (GET_IF_STATS_CODE + 1)
#define MAP_SERVER_ADAPTER_CODE (DELETE_ADAPTERS_CODE + 1)
#define QUEUE_CODE (MAP_SERVER_ADAPTER_CODE + 1)
#define MAX_WANARP_CODE (QUEUE_CODE + 1)
typedef enum _DEMAND_DIAL_EVENT
{
DDE_CONNECT_INTERFACE = 0,
DDE_INTERFACE_CONNECTED = 1,
DDE_INTERFACE_DISCONNECTED = 2,
DDE_CALLOUT_LINKUP = 3,
DDE_CALLOUT_LINKDOWN = 4,
}DEMAND_DIAL_EVENT, *PDEMAND_DIAL_EVENT;
//
// IOCTL_WANARP_NOTIFICATION
// For DEMAND_DIAL_CONNECT_INTERFACE WANARP fills in as much of the packet
// as can go into the following structure. The ulPacketLength denotes the whole
// length of the packet and the consumer should copy out the
// MIN(ulPacketLength, MAX_PACKET_COPY_SIZE);
//
#define IOCTL_WANARP_NOTIFICATION \
_WANARP_CTL_CODE(NOTIFICATION_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS)
#define MAX_PACKET_COPY_SIZE 128
#pragma warning(disable:4201)
typedef struct _WANARP_NOTIFICATION
{
DEMAND_DIAL_EVENT ddeEvent;
DWORD dwUserIfIndex;
DWORD dwAdapterIndex;
union
{
struct
{
DWORD dwPacketSrcAddr;
DWORD dwPacketDestAddr;
ULONG ulPacketLength;
BYTE byPacketProtocol;
BYTE rgbyPacket[MAX_PACKET_COPY_SIZE];
};
struct
{
DWORD dwLocalAddr;
DWORD dwLocalMask;
DWORD dwRemoteAddr;
DWORD fDefaultRoute;
WCHAR rgwcName[WANARP_MAX_DEVICE_NAME_LEN + 2];
};
};
}WANARP_NOTIFICATION, *PWANARP_NOTIFICATION;
#pragma warning(default:4201)
//
// IOCTL_WANARP_ADD_INTERFACE
//
#define IOCTL_WANARP_ADD_INTERFACE \
_WANARP_CTL_CODE(ADD_INTERFACE_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS)
typedef struct _WANARP_ADD_INTERFACE_INFO
{
IN DWORD dwUserIfIndex;
IN DWORD bCallinInterface;
OUT DWORD dwAdapterIndex;
OUT WCHAR rgwcDeviceName[WANARP_MAX_DEVICE_NAME_LEN + 2];
}WANARP_ADD_INTERFACE_INFO, *PWANARP_ADD_INTERFACE_INFO;
//
// The user index can never be 0 (or NULL)
//
#define WANARP_INVALID_IFINDEX 0
//
// IOCTL_WANARP_DELETE_INTERFACE
//
#define IOCTL_WANARP_DELETE_INTERFACE \
_WANARP_CTL_CODE(DELETE_INTERFACE_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS)
typedef struct _WANARP_DELETE_INTERFACE_INFO
{
IN DWORD dwUserIfIndex;
}WANARP_DELETE_INTERFACE_INFO, *PWANARP_DELETE_INTERFACE_INFO;
//
// IOCTL_WANARP_CONNECT_FAILED
//
#define IOCTL_WANARP_CONNECT_FAILED \
_WANARP_CTL_CODE(CONNECT_FAILED_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS)
typedef struct _WANARP_CONNECT_FAILED_INFO
{
IN DWORD dwUserIfIndex;
}WANARP_CONNECT_FAILED_INFO, *PWANARP_CONNECT_FAILED_INFO;
//
// IOCTL_WANARP_GET_IF_STATS
//
#define IOCTL_WANARP_GET_IF_STATS \
_WANARP_CTL_CODE(GET_IF_STATS_CODE,METHOD_BUFFERED,FILE_READ_ACCESS)
typedef struct _WANARP_GET_IF_STATS_INFO
{
IN DWORD dwUserIfIndex;
IFEntry ifeInfo;
}WANARP_GET_IF_STATS_INFO, *PWANARP_GET_IF_STATS_INFO;
//
// IOCTL_WANARP_DELETE_ADAPTERS
//
#define IOCTL_WANARP_DELETE_ADAPTERS \
_WANARP_CTL_CODE(DELETE_ADAPTERS_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS)
typedef struct _WANARP_DELETE_ADAPTERS_INFO
{
//
// IN: Number of adapters to delete
// OUT: If == IN, then number of adapters deleted
// If < IN, then number of adapters that can be deleted
//
IN OUT ULONG ulNumAdapters;
OUT GUID rgAdapterGuid[ANY_SIZE];
}WANARP_DELETE_ADAPTERS_INFO, *PWANARP_DELETE_ADAPTERS_INFO;
//
// IOCTL_WANARP_MAP_SERVER_ADAPTER
//
#define IOCTL_WANARP_MAP_SERVER_ADAPTER \
_WANARP_CTL_CODE(MAP_SERVER_ADAPTER_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS)
typedef struct _WANARP_MAP_SERVER_ADAPTER_INFO
{
IN DWORD fMap;
OUT DWORD dwAdapterIndex;
}WANARP_MAP_SERVER_ADAPTER_INFO, *PWANARP_MAP_SERVER_ADAPTER_INFO;
//
// IOCTL_WANARP_QUEUE
//
#define IOCTL_WANARP_QUEUE \
_WANARP_CTL_CODE(QUEUE_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS)
typedef struct _WANARP_IF_INFO
{
GUID InterfaceGuid;
DWORD dwAdapterIndex;
DWORD dwLocalAddr;
DWORD dwLocalMask;
DWORD dwRemoteAddr;
}WANARP_IF_INFO, *PWANARP_IF_INFO;
typedef struct _WANARP_QUEUE_INFO
{
IN DWORD fQueue;
OUT ULONG ulNumCallout;
OUT WANARP_IF_INFO rgIfInfo[ANY_SIZE];
}WANARP_QUEUE_INFO, *PWANARP_QUEUE_INFO;
//
// IP Struct passed up in lineup indication
//
typedef enum _DIAL_USAGE
{
DU_CALLIN = 0,
DU_CALLOUT = 1,
DU_ROUTER = 2
}DIAL_USAGE, *PDIAL_USAGE;
typedef struct _IP_WAN_LINKUP_INFO
{
DIAL_USAGE duUsage;
DWORD dwUserIfIndex;
DWORD dwLocalAddr;
DWORD dwLocalMask;
DWORD dwRemoteAddr;
DWORD fFilterNetBios;
DWORD fDefaultRoute;
}IP_WAN_LINKUP_INFO, *PIP_WAN_LINKUP_INFO;
#define WANARP_RECONFIGURE_VERSION (DWORD)0x01
typedef enum _WANARP_RECONFIGURE_CODE
{
WRC_ADD_INTERFACES = 1,
WRC_TCP_WINDOW_SIZE_UPDATE = 2,
}WANARP_RECONFIGURE_CODE, *PWANARP_RECONFIGURE_CODE;
typedef struct _WANARP_RECONFIGURE_INFO
{
//
// Version of this request
//
DWORD dwVersion;
//
// Code, see above
//
WANARP_RECONFIGURE_CODE wrcOperation;
//
// Number of Guids in the array below
//
ULONG ulNumInterfaces;
//
// Guids themselves
//
GUID rgInterfaces[ANYSIZE_ARRAY];
}WANARP_RECONFIGURE_INFO, *PWANARP_RECONFIGURE_INFO;
#endif // _WANARPIF_H_