155 lines
4.6 KiB
C
155 lines
4.6 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
D4drvif.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
DOT4 Driver Interface
|
||
|
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _DOT4DRVIF_H
|
||
|
#define _DOT4DRVIF_H
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
// Includes
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
// Defines
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
#define MAX_SERVICE_LENGTH 40
|
||
|
|
||
|
|
||
|
#ifndef CTL_CODE
|
||
|
|
||
|
//
|
||
|
// Macro definition for defining IOCTL and FSCTL function control codes. Note
|
||
|
// that function codes 0-2047 are reserved for Microsoft Corporation, and
|
||
|
// 2048-4095 are reserved for customers.
|
||
|
//
|
||
|
|
||
|
#define CTL_CODE( DeviceType, Function, Method, Access ) ( \
|
||
|
((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
|
||
|
)
|
||
|
|
||
|
//
|
||
|
// Define the method codes for how buffers are passed for I/O and FS controls
|
||
|
//
|
||
|
|
||
|
#define METHOD_BUFFERED 0
|
||
|
#define METHOD_IN_DIRECT 1
|
||
|
#define METHOD_OUT_DIRECT 2
|
||
|
#define METHOD_NEITHER 3
|
||
|
|
||
|
//
|
||
|
// Define the access check value for any access
|
||
|
//
|
||
|
//
|
||
|
// The FILE_READ_ACCESS and FILE_WRITE_ACCESS constants are also defined in
|
||
|
// ntioapi.h as FILE_READ_DATA and FILE_WRITE_DATA. The values for these
|
||
|
// constants *MUST* always be in sync.
|
||
|
//
|
||
|
|
||
|
|
||
|
#define FILE_ANY_ACCESS 0
|
||
|
#define FILE_READ_ACCESS ( 0x0001 ) // file & pipe
|
||
|
#define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#define FILE_DEVICE_DOT4 0x3a
|
||
|
#define IOCTL_DOT4_USER_BASE 2049
|
||
|
#define IOCTL_DOT4_LAST IOCTL_DOT4_USER_BASE + 9
|
||
|
|
||
|
#define IOCTL_DOT4_CREATE_SOCKET CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 7, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
||
|
#define IOCTL_DOT4_DESTROY_SOCKET CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 9, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
||
|
#define IOCTL_DOT4_WAIT_FOR_CHANNEL CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 8, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
||
|
#define IOCTL_DOT4_OPEN_CHANNEL CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 0, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
||
|
#define IOCTL_DOT4_CLOSE_CHANNEL CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
#define IOCTL_DOT4_READ CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 2, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
||
|
#define IOCTL_DOT4_WRITE CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 3, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
|
||
|
#define IOCTL_DOT4_ADD_ACTIVITY_BROADCAST CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
#define IOCTL_DOT4_REMOVE_ACTIVITY_BROADCAST CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
#define IOCTL_DOT4_WAIT_ACTIVITY_BROADCAST CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 6, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
||
|
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
// Types
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
typedef struct _DOT4_DRIVER_CMD
|
||
|
{
|
||
|
// Handle to channel
|
||
|
CHANNEL_HANDLE hChannelHandle;
|
||
|
|
||
|
// Length of request
|
||
|
ULONG ulSize;
|
||
|
|
||
|
// Offset into buffer
|
||
|
ULONG ulOffset;
|
||
|
|
||
|
// Timeout of operation. Can be INFINITE.
|
||
|
ULONG ulTimeout;
|
||
|
|
||
|
} DOT4_DRIVER_CMD, *PDOT4_DRIVER_CMD;
|
||
|
|
||
|
|
||
|
typedef struct _DOT4_DC_OPEN_DATA
|
||
|
{
|
||
|
// Host socket created by CREATE_SOCKET
|
||
|
unsigned char bHsid;
|
||
|
|
||
|
// TRUE to immediately add activity broadcast upon creation
|
||
|
unsigned char fAddActivity;
|
||
|
|
||
|
// Handle to channel returned
|
||
|
CHANNEL_HANDLE hChannelHandle;
|
||
|
|
||
|
} DOT4_DC_OPEN_DATA, *PDOT4_DC_OPEN_DATA;
|
||
|
|
||
|
|
||
|
typedef struct _DOT4_DC_CREATE_DATA
|
||
|
{
|
||
|
// This or service name sent
|
||
|
unsigned char bPsid;
|
||
|
|
||
|
CHAR pServiceName[MAX_SERVICE_LENGTH + 1];
|
||
|
|
||
|
// Type (stream or packet) of channels on socket
|
||
|
unsigned char bType;
|
||
|
|
||
|
// Size of read buffer for channels on socket
|
||
|
ULONG ulBufferSize;
|
||
|
|
||
|
USHORT usMaxHtoPPacketSize;
|
||
|
|
||
|
USHORT usMaxPtoHPacketSize;
|
||
|
|
||
|
// Host socket id returned
|
||
|
unsigned char bHsid;
|
||
|
|
||
|
} DOT4_DC_CREATE_DATA, *PDOT4_DC_CREATE_DATA;
|
||
|
|
||
|
|
||
|
typedef struct _DOT4_DC_DESTROY_DATA
|
||
|
{
|
||
|
// Host socket created by CREATE_SOCKET
|
||
|
unsigned char bHsid;
|
||
|
|
||
|
} DOT4_DC_DESTROY_DATA, *PDOT4_DC_DESTROY_DATA;
|
||
|
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
// Prototypes
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
#endif
|