windows-nt/Source/XPSP1/NT/net/atm/samples/atmsmpl/inc/atmsample.h

173 lines
5.3 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
atmsample.h
Abstract:
Common header file defined for ATM Sample client. This file defines the
IOCTLs used for communicating with the driver
Author:
Anil Francis Thomas (10/98)
Environment:
Kernel \ User
Revision History:
DChen 092499 Cleanup
--*/
#ifndef _ATMSAMPLE__
#define _ATMSAMPLE__
#define ATMSM_SERVICE_NAME "AtmSmDrv"
#define ATMSM_SERVICE_NAME_L L"AtmSmDrv"
#define ATM_SAMPLE_CLIENT_DOS_NAME_L L"\\\\.\\ATMSampleClient"
#define ATM_SAMPLE_CLIENT_DOS_NAME "\\\\.\\ATMSampleClient"
#ifndef NSAP_ADDRESS_LEN
#define NSAP_ADDRESS_LEN 20
#endif
#define ACCESS_FROM_CTL_CODE(ctrlCode) (((ULONG)(ctrlCode & 0x0000C000)) >> 14)
#define METHOD_FROM_CTL_CODE(ctrlCode) ((ULONG)(ctrlCode & 0x0000C0003))
#define FILE_DEVICE_ATMSM 0x00009900
#define _ATMSM_CTL_CODE(function, method, access) \
CTL_CODE(FILE_DEVICE_ATMSM, function, method, access)
//
// IOCTL function codes
//
enum _ATMSM_IOCTL
{
DIOC_ENUMERATE_ADAPTERS,
DIOC_OPEN_FOR_RECV,
DIOC_RECV_DATA,
DIOC_CLOSE_RECV_HANDLE,
DIOC_CONNECT_TO_DSTS,
DIOC_SEND_TO_DSTS,
DIOC_CLOSE_SEND_HANDLE,
ATMSM_NUM_IOCTLS
};
#define ATMSM_MIN_FUNCTION_CODE DIOC_ENUMERATE_ADAPTERS
#define ATMSM_MAX_FUNCTION_CODE DIOC_CLOSE_SEND_HANDLE
////////////////////////////////////////////////////////////////////
// IOCTL to enumerate adapters //
////////////////////////////////////////////////////////////////////
#define IOCTL_ENUMERATE_ADAPTERS \
_ATMSM_CTL_CODE(DIOC_ENUMERATE_ADAPTERS, METHOD_BUFFERED, \
FILE_READ_ACCESS)
// - IN -
// None
// - OUT -
// The structure contains an array of adapter ATM addresses
typedef struct _AdapterInfo
{
ULONG ulNumAdapters;
UCHAR ucLocalATMAddr[1][NSAP_ADDRESS_LEN];
} ADAPTER_INFO, *PADAPTER_INFO;
/////////////////////////////////////////////////////////////////////
// IOCTL to open the adapter for recv //
/////////////////////////////////////////////////////////////////////
#define IOCTL_OPEN_FOR_RECV \
_ATMSM_CTL_CODE(DIOC_OPEN_FOR_RECV, METHOD_BUFFERED, \
FILE_READ_ACCESS)
// - IN -
// structure used for opening for recv
// Note! - Only 1 open for Recv is permitted per adapter
//
typedef struct _OpenForRecvInfo
{
UCHAR ucLocalATMAddr[NSAP_ADDRESS_LEN];
} OPEN_FOR_RECV_INFO, *POPEN_FOR_RECV_INFO;
// - OUT -
// return is a context handle, used in read IOCTL
/////////////////////////////////////////////////////////////////////
// IOCTL to recv packets from an adapter opened for recvs //
/////////////////////////////////////////////////////////////////////
#define IOCTL_RECV_DATA \
_ATMSM_CTL_CODE(DIOC_RECV_DATA, METHOD_OUT_DIRECT, \
FILE_READ_ACCESS)
// - IN -
// context obtained when the adapter was opened for read
// and a buffer for reading
// - OUT -
// data in the the buffer
/////////////////////////////////////////////////////////////////////
// IOCTL to stop receiving //
/////////////////////////////////////////////////////////////////////
#define IOCTL_CLOSE_RECV_HANDLE \
_ATMSM_CTL_CODE(DIOC_CLOSE_RECV_HANDLE, METHOD_BUFFERED, \
FILE_READ_ACCESS)
// - IN -
// context obtained when the adapter was opened for read
/////////////////////////////////////////////////////////////////////
// IOCTL to connect to destinations //
/////////////////////////////////////////////////////////////////////
#define IOCTL_CONNECT_TO_DSTS \
_ATMSM_CTL_CODE(DIOC_CONNECT_TO_DSTS, METHOD_BUFFERED, \
FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// - IN -
// Connect to 1 or multiple destinations (P-P or PMP connections)
// The structure contains an array of destinations ATM addresses
//
typedef struct _ConnectInfo
{
ULONG bPMP;
ULONG ulNumDsts;
UCHAR ucLocalATMAddr[NSAP_ADDRESS_LEN];
UCHAR ucDstATMAddrs[1][NSAP_ADDRESS_LEN];
}CONNECT_INFO, *PCONNECT_INFO;
// - OUT -
// return is a context handle, used in send IOCTL
/////////////////////////////////////////////////////////////////////
// IOCTL to send to destinations //
/////////////////////////////////////////////////////////////////////
#define IOCTL_SEND_TO_DSTS \
_ATMSM_CTL_CODE(DIOC_SEND_TO_DSTS, METHOD_IN_DIRECT, \
FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// - IN -
// context obtained when the adapter was opened for sends
// - OUT -
// a buffer and size that needs to be send
/////////////////////////////////////////////////////////////////////
// IOCTL to stop receiving //
/////////////////////////////////////////////////////////////////////
#define IOCTL_CLOSE_SEND_HANDLE \
_ATMSM_CTL_CODE(DIOC_CLOSE_SEND_HANDLE, METHOD_BUFFERED, \
FILE_READ_ACCESS)
// - IN -
// context obtained when the adapter was opened for sends
#endif // _ATMSAMPLE__