95 lines
2.5 KiB
C
95 lines
2.5 KiB
C
|
|
||
|
/***************************************************************************
|
||
|
*
|
||
|
* tdtdi.h
|
||
|
*
|
||
|
* This module contains internal defines and structures for TDI based TDs.
|
||
|
*
|
||
|
* Copyright 1998 Microsoft
|
||
|
*
|
||
|
*
|
||
|
****************************************************************************/
|
||
|
|
||
|
typedef enum _ENDPOINT_TYPE {
|
||
|
TdiAddressObject,
|
||
|
TdiConnectionStream,
|
||
|
TdiConnectionDatagram
|
||
|
} ENDPOINT_TYPE;
|
||
|
|
||
|
/*
|
||
|
* TD stack endpoint structure.
|
||
|
*
|
||
|
* This is registered with ICADD.SYS to create a "handle" that can be returned
|
||
|
* to ICASRV to represent a connection in a secure manner.
|
||
|
*/
|
||
|
typedef struct _TD_STACK_ENDPOINT {
|
||
|
ULONG AddressType; // Address type (family) for this endpoint
|
||
|
struct _TD_ENDPOINT *pEndpoint; // Pointer to real endpoint structure
|
||
|
} TD_STACK_ENDPOINT, *PTD_STACK_ENDPOINT;
|
||
|
|
||
|
/*
|
||
|
* TD endpoint structure
|
||
|
*
|
||
|
* This structure contains all information about an endpoint.
|
||
|
* An endpoint may be either an address endpoint or a connection endpoint.
|
||
|
*/
|
||
|
typedef struct _TD_ENDPOINT {
|
||
|
|
||
|
NTSTATUS Status;
|
||
|
|
||
|
|
||
|
HANDLE TransportHandle;
|
||
|
PEPROCESS TransportHandleProcess;
|
||
|
PFILE_OBJECT pFileObject;
|
||
|
PDEVICE_OBJECT pDeviceObject;
|
||
|
UNICODE_STRING TransportName;
|
||
|
PTRANSPORT_ADDRESS pTransportAddress;
|
||
|
ULONG TransportAddressLength;
|
||
|
PTRANSPORT_ADDRESS pRemoteAddress;
|
||
|
ULONG RemoteAddressLength;
|
||
|
ENDPOINT_TYPE EndpointType;
|
||
|
|
||
|
// This protects the following fields
|
||
|
KSPIN_LOCK Spinlock;
|
||
|
|
||
|
// These fields are only used on Address endpoints
|
||
|
LIST_ENTRY ConnectedQueue;
|
||
|
LIST_ENTRY AcceptQueue;
|
||
|
LIST_ENTRY ConnectionQueue;
|
||
|
ULONG ConnectionQueueSize;
|
||
|
BOOLEAN ConnectIndicationRegistered;
|
||
|
BOOLEAN DisconnectIndicationRegistered;
|
||
|
BOOLEAN RecvIndicationRegistered;
|
||
|
KEVENT AcceptEvent;
|
||
|
BOOLEAN Waiter;
|
||
|
|
||
|
// This is used on Connection endpoints
|
||
|
HANDLE hIcaHandle; // Handle for TD_STACK_ENDPOINT
|
||
|
BOOLEAN Connected;
|
||
|
BOOLEAN Disconnected;
|
||
|
PIRP AcceptIrp;
|
||
|
LIST_ENTRY ReceiveQueue;
|
||
|
LIST_ENTRY ConnectionLink;
|
||
|
TDI_CONNECTION_INFORMATION SendInfo;
|
||
|
ULONG RecvBytesReady;
|
||
|
HANDLE hConnectionEndPointIcaHandle; // handle for TD_ENDPOINT (this structure)
|
||
|
HANDLE hTransportAddressIcaHandle; // handle for TRANSPORT_ADDRESS
|
||
|
|
||
|
} TD_ENDPOINT, *PTD_ENDPOINT;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* TDI TD structure
|
||
|
*/
|
||
|
typedef struct _TDTDI {
|
||
|
|
||
|
PTD_ENDPOINT pAddressEndpoint;
|
||
|
|
||
|
PTD_ENDPOINT pConnectionEndpoint;
|
||
|
|
||
|
ULONG OutBufDelay; // Outbuf delay for connection
|
||
|
|
||
|
} TDTDI, * PTDTDI;
|
||
|
|
||
|
|