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

160 lines
5.2 KiB
C

/*++
Copyright (c) 1990-1996 Microsoft Corporation
Module Name:
asyncpub.h
Abstract:
This file contains all public data structures and defines used
by asyncmac. It defines the Ioctl interface to asyncmac.
Author:
Tony Bell (TonyBe) October 16, 1996
Environment:
Kernel Mode
Revision History:
TonyBe 10/16/96 Created
--*/
#ifndef _ASYNCMAC_PUB_
#define _ASYNCMAC_PUB_
//------------------------------------------------------------------------
//--------------------- OLD RAS COMPRESSION INFORMATION ------------------
//------------------------------------------------------------------------
// The defines below are for the compression bitmap field.
// No bits are set if compression is not available at all
#define COMPRESSION_NOT_AVAILABLE 0x00000000
// This bit is set if the mac can do version 1 compressed frames
#define COMPRESSION_VERSION1_8K 0x00000001
#define COMPRESSION_VERSION1_16K 0x00000002
#define COMPRESSION_VERSION1_32K 0x00000004
#define COMPRESSION_VERSION1_64K 0x00000008
// And this to turn off any compression feature bit
#define COMPRESSION_OFF_BIT_MASK (~( COMPRESSION_VERSION1_8K | \
COMPRESSION_VERSION1_16K | \
COMPRESSION_VERSION1_32K | \
COMPRESSION_VERSION1_64K ))
// We need to find a place to put the following supported featurettes...
#define XON_XOFF_SUPPORTED 0x00000010
#define COMPRESS_BROADCAST_FRAMES 0x00000080
#define UNKNOWN_FRAMING 0x00010000
#define NO_FRAMING 0x00020000
#define NT31RAS_COMPRESSION 254
#define FUNC_ASYCMAC_OPEN 0
#define FUNC_ASYCMAC_CLOSE 1
#define FUNC_ASYCMAC_TRACE 2
#define FUNC_ASYCMAC_DCDCHANGE 3
#ifdef MY_DEVICE_OBJECT
#define FILE_DEVICE_ASYMAC 0x031
#define ASYMAC_CTL_CODE(_Function) CTL_CODE(FILE_DEVICE_ASYMAC, _Function, METHOD_BUFFERED, FILE_ANY_ACCESS)
#else
#define ASYMAC_CTL_CODE(_Function) CTL_CODE(FILE_DEVICE_NETWORK, _Function, METHOD_BUFFERED, FILE_ANY_ACCESS)
#endif
#define IOCTL_ASYMAC_OPEN ASYMAC_CTL_CODE(FUNC_ASYCMAC_OPEN )
#define IOCTL_ASYMAC_CLOSE ASYMAC_CTL_CODE(FUNC_ASYCMAC_CLOSE )
#define IOCTL_ASYMAC_TRACE ASYMAC_CTL_CODE(FUNC_ASYCMAC_TRACE )
#define IOCTL_ASYMAC_DCDCHANGE ASYMAC_CTL_CODE(FUNC_ASYCMAC_DCDCHANGE )
//
// Asyncmac error messages
//
// All AsyncMac errors start with this base number
#define ASYBASE 700
// The Mac has not bound to an upper protocol, or the
// previous binding to AsyncMac has been destroyed.
#define ASYNC_ERROR_NO_ADAPTER ASYBASE+0
// A port was attempted to be open that was not CLOSED yet.
#define ASYNC_ERROR_ALREADY_OPEN ASYBASE+1
// All the ports (allocated) are used up or there is
// no binding to the AsyncMac at all (and thus no ports).
// The number of ports allocated comes from the registry.
#define ASYNC_ERROR_NO_PORT_AVAILABLE ASYBASE+2
// In the open IOCtl to the AsyncParameter the Adapter
// parameter passed was invalid.
#define ASYNC_ERROR_BAD_ADAPTER_PARAM ASYBASE+3
// During a close or compress request, the port
// specified did not exist.
#define ASYNC_ERROR_PORT_NOT_FOUND ASYBASE+4
// A request came in for the port which could not
// be handled because the port was in a bad state.
// i.e. you can't a close a port if its state is OPENING
#define ASYNC_ERROR_PORT_BAD_STATE ASYBASE+5
// A call to ASYMAC_COMPRESS was bad with bad
// parameters. That is, parameters that were not
// supported. The fields will not be set to the bad params.
#define ASYNC_ERROR_BAD_COMPRESSION_INFO ASYBASE+6
// this structure is passed in as the input buffer when opening a port
typedef struct ASYMAC_OPEN ASYMAC_OPEN, *PASYMAC_OPEN;
struct ASYMAC_OPEN {
OUT NDIS_HANDLE hNdisEndpoint; // unique for each endpoint assigned
IN ULONG LinkSpeed; // RAW link speed in bits per sec
IN USHORT QualOfConnect; // NdisAsyncRaw, NdisAsyncErrorControl, ...
IN HANDLE FileHandle; // the Win32 or Nt File Handle
};
// this structure is passed in as the input buffer when closing a port
typedef struct ASYMAC_CLOSE ASYMAC_CLOSE, *PASYMAC_CLOSE;
struct ASYMAC_CLOSE {
NDIS_HANDLE hNdisEndpoint; // unique for each endpoint assigned
PVOID MacAdapter; // Which binding to AsyMac to use -- if set
// to NULL, will default to last binding
};
typedef struct ASYMAC_DCDCHANGE ASYMAC_DCDCHANGE, *PASYMAC_DCDCHANGE;
struct ASYMAC_DCDCHANGE {
NDIS_HANDLE hNdisEndpoint; // unique for each endpoint assigned
PVOID MacAdapter; // Which binding to AsyMac to use -- if set
// to NULL, will default to last binding
};
// this structure is used to read/set configurable 'feature' options
// during authentication this structure is passed and an
// agreement is made which features to support
typedef struct ASYMAC_FEATURES ASYMAC_FEATURES, *PASYMAC_FEATURES;
struct ASYMAC_FEATURES {
ULONG SendFeatureBits; // A bit field of compression/features sendable
ULONG RecvFeatureBits; // A bit field of compression/features receivable
ULONG MaxSendFrameSize; // Maximum frame size that can be sent
// must be less than or equal default
ULONG MaxRecvFrameSize; // Maximum frame size that can be rcvd
// must be less than or equal default
ULONG LinkSpeed; // New RAW link speed in bits/sec
// Ignored if 0
};
#endif // ASYNC_PUB