57 static WCHAR DriverName[] =
L"TCP/IP";
60 (DumpDataCount *
sizeof(
ULONG)) +
sizeof(DriverName);
125 EaInfo =
Irp->AssociatedIrp.SystemBuffer;
161 (
Address->TAAddressCount != 1) ||
167 if(
Address->TAAddressCount == 1 )
170 Address->Address[0].AddressLength));
172 Address->Address[0].AddressType));
250 Context->Handle.ConnectionContext =
Request.Handle.ConnectionContext;
309 Request.Handle.ConnectionContext =
Context->Handle.ConnectionContext;
328 return Irp->IoStatus.Status;
392 TI_DbgPrint(
DEBUG_IRP, (
"[TCPIP, TiDispatchInternal] Called. DeviceObject is at (0x%X), IRP is at (0x%X) MN (%d).\n",
396 Irp->IoStatus.Information = 0;
499 Irp->IoStatus.Information = 0;
NTSTATUS FileCloseConnection(PTDI_REQUEST Request)
_In_ ULONG _In_ BOOLEAN _In_ ULONG UniqueErrorValue
#define TI_DbgPrint(_t_, _x_)
NTSTATUS DispTdiSetInformation(PIRP Irp)
NTSTATUS DispTdiSetIPAddress(PIRP Irp, PIO_STACK_LOCATION IrpSp)
VOID NTAPI IPTimeoutDpcFn(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
NTSTATUS DispTdiDisconnect(PIRP Irp)
NDIS_HANDLE GlobalPacketPool
NTSTATUS FileCloseAddress(PTDI_REQUEST Request)
NTSTATUS IPShutdown(VOID)
NTSTATUS DispTdiSend(PIRP Irp)
#define STATUS_INSUFFICIENT_RESOURCES
_In_ NDIS_ERROR_CODE ErrorCode
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD Unknown3
NTSTATUS DispTdiQueryIpHwAddress(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS DispTdiQueryInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp)
#define FILE_DEVICE_NETWORK
NTSTATUS RawIPShutdown(VOID)
#define IOCTL_ICMP_ECHO_REQUEST
#define TDI_ASSOCIATE_ADDRESS
#define EVENT_TRANSPORT_REGISTER_FAILED
#define STATUS_INVALID_PARAMETER
NTSTATUS DispTdiConnect(PIRP Irp)
LIST_ENTRY ConnectionEndpointListHead
NTSTATUS UDPShutdown(VOID)
struct _TA_ADDRESS_IP * PTA_IP_ADDRESS
NDIS_STATUS LoopUnregisterAdapter(PLAN_ADAPTER Adapter)
KSPIN_LOCK InterfaceListLock
NTSTATUS FileCloseControlChannel(PTDI_REQUEST Request)
VOID TiWriteErrorLog(PDRIVER_OBJECT DriverContext, NTSTATUS ErrorCode, ULONG UniqueErrorValue, NTSTATUS FinalStatus, PWSTR String, ULONG DumpDataCount, PULONG DumpData)
#define DD_TCP_DEVICE_NAME
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_In_ USHORT _In_ ULONG Protocol
#define TDI_CONNECTION_FILE
NTSTATUS RawIPStartup(VOID)
#define STATUS_INVALID_DEVICE_REQUEST
#define TDI_CONNECTION_CONTEXT_LENGTH
BOOLEAN NTAPI KeSetTimerEx(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN LONG Period, IN PKDPC Dpc OPTIONAL)
NTSTATUS NTAPI TiDispatchInternal(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS TiCreateFileObject(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID TcpipReleaseSpinLock(PKSPIN_LOCK SpinLock, KIRQL Irql)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID NTAPI IoWriteErrorLogEntry(IN PVOID ElEntry)
VOID TcpipAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL Irql)
#define TDI_SET_INFORMATION
VOID NTAPI TiUnload(PDRIVER_OBJECT DriverObject)
VOID NTAPI IPAddInterface(ULONG Unknown0, ULONG Unknown1, ULONG Unknown2, ULONG Unknown3, ULONG Unknown4)
_In_ PDEVICE_OBJECT DeviceObject
return STATUS_NOT_IMPLEMENTED
NTSTATUS DispTdiSetInformationEx(PIRP Irp, PIO_STACK_LOCATION IrpSp)
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
pRequest Complete(RequestStatus)
NTSTATUS UDPStartup(VOID)
PRTL_UNICODE_STRING_BUFFER PULONG PULONG Unknown4
VOID NTAPI LookupRoute(ULONG Unknown0, ULONG Unknown1)
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
NTSTATUS DispTdiQueryInformationEx(PIRP Irp, PIO_STACK_LOCATION IrpSp)
#define TCPIP_PROTOCOL_NAME
struct _IO_ERROR_LOG_PACKET IO_ERROR_LOG_PACKET
#define ERROR_LOG_MAXIMUM_SIZE
#define TDI_SET_EVENT_HANDLER
#define TI_ERROR_DRIVERENTRY
NTSTATUS DispTdiDeleteIPAddress(PIRP Irp, PIO_STACK_LOCATION IrpSp)
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
#define DD_IP_DEVICE_NAME
#define TDI_RECEIVE_DATAGRAM
NTSTATUS ICMPShutdown(VOID)
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
NTSTATUS DispTdiSendDatagram(PIRP Irp)
PVOID NTAPI IoAllocateErrorLogEntry(IN PVOID IoObject, IN UCHAR EntrySize)
NTSTATUS DispEchoRequest(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
PDEVICE_OBJECT UDPDeviceObject
#define IOCTL_DELETE_IP_ADDRESS
NTSTATUS TiGetProtocolNumber(PUNICODE_STRING FileName, PULONG Protocol)
NTSTATUS DispTdiListen(PIRP Irp)
NDIS_HANDLE GlobalBufferPool
PDEVICE_OBJECT TCPDeviceObject
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
PDEVICE_OBJECT IPDeviceObject
#define NT_SUCCESS(StatCode)
NTSTATUS NTAPI TiDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
Dispatch routine for IRP_MJ_DEVICE_CONTROL requests.
NTSTATUS DispTdiReceiveDatagram(PIRP Irp)
#define DD_UDP_DEVICE_NAME
#define IRP_MJ_INTERNAL_DEVICE_CONTROL
#define IOCTL_SET_IP_ADDRESS
VOID NTAPI IPDelInterface(ULONG Unknown0)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define NDIS_STATUS_SUCCESS
NTSTATUS DispTdiSetEventHandler(PIRP Irp)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
PDEVICE_OBJECT RawIPDeviceObject
#define TDI_TRANSPORT_ADDRESS_FILE
#define TDI_ADDRESS_TYPE_IP
#define IOCTL_TCP_QUERY_INFORMATION_EX
NTSTATUS NTAPI TdiMapUserRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp)
#define TDI_QUERY_INFORMATION
#define IOCTL_TCP_SET_INFORMATION_EX
NTSTATUS TCPStartup(VOID)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
LIST_ENTRY AddressFileListHead
LIST_ENTRY InterfaceListHead
NTSTATUS NTAPI TiDispatchOpenClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS TiCloseFileObject(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS IPStartup(PUNICODE_STRING RegistryPath)
NTSTATUS NTAPI DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
#define InitializeListHead(ListHead)
NTSTATUS DispTdiAssociateAddress(PIRP Irp)
_In_ PIO_STACK_LOCATION IrpSp
VOID EXPORT NdisFreeBufferPool(IN NDIS_HANDLE PoolHandle)
#define TdiTransportAddress
NTSTATUS LANRegisterProtocol(PNDIS_STRING Name)
Registers this protocol driver with NDIS.
_In_ WDFTIMER _In_ LONGLONG DueTime
VOID EXPORT NdisAllocatePacketPoolEx(OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE PoolHandle, IN UINT NumberOfDescriptors, IN UINT NumberOfOverflowDescriptors, IN UINT ProtocolReservedLength)
VOID EXPORT NdisFreePacketPool(IN NDIS_HANDLE PoolHandle)
#define TdiConnectionContext
KSPIN_LOCK AddressFileListLock
NTSTATUS FileOpenAddress(PTDI_REQUEST Request, PTA_IP_ADDRESS AddrList, USHORT Protocol, BOOLEAN Shared, PVOID Options)
NTSTATUS ICMPStartup(VOID)
#define TDI_TRANSPORT_ADDRESS_LENGTH
#define TDI_SEND_DATAGRAM
struct _IO_ERROR_LOG_PACKET * PIO_ERROR_LOG_PACKET
struct tagContext Context
NTSTATUS IRPFinish(PIRP Irp, NTSTATUS Status)
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
NTSTATUS DispTdiDisassociateAddress(PIRP Irp)
#define TDI_DISASSOCIATE_ADDRESS
#define RtlCopyMemory(Destination, Source, Length)
KSPIN_LOCK EntityListLock
NTSTATUS DispTdiReceive(PIRP Irp)
#define DD_RAWIP_DEVICE_NAME
NTSTATUS FileOpenControlChannel(PTDI_REQUEST Request)
#define ExFreePoolWithTag(_P, _T)
NTSTATUS TCPShutdown(VOID)
#define TDI_ADDRESS_LENGTH_IP
TDIEntityInfo * EntityList
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
NTSTATUS FileOpenConnection(PTDI_REQUEST Request, PVOID ClientContext)
KSPIN_LOCK ConnectionEndpointListLock
VOID ChewInit(PDEVICE_OBJECT DeviceObject)
NDIS_STATUS LoopRegisterAdapter(PNDIS_STRING AdapterName, PLAN_ADAPTER *Adapter)
VOID LANUnregisterProtocol(VOID)
Unregisters this protocol driver with NDIS.
VOID EXPORT NdisAllocateBufferPool(OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE PoolHandle, IN UINT NumberOfDescriptors)
static PSecPkgInfoA *static SEC_CHAR PVOID
HRESULT Create([out]ITransactionReceiver **ppReceiver)
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
_In_ UCHAR _In_ UCHAR _In_ ULONG _In_ WDFCONTEXT DriverContext
#define IOCTL_QUERY_IP_HW_ADDRESS
#define RtlCompareMemory(s1, s2, l)
NTSTATUS DispTdiAccept(PIRP Irp)
#define IRP_MJ_DEVICE_CONTROL
#define RTL_CONSTANT_STRING(s)
#define TDI_CONTROL_CHANNEL_FILE