Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/***************************************************************************
* * 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;
|