tdiqtest.c
来自「网络驱动开发」· C语言 代码 · 共 777 行 · 第 1/2 页
C
777 行
// Simple driver that demonstrates dynamically loading and unloading
#include "ndis.h"
#include "TDI.H"
#include "TDIKRNL.H"
#include "KSTcpEx.h"
#include "KSUtil.h"
#define NT_DEVICE_NAME_W L"\\Device\\TDIQtest"
#define DOS_DEVICE_NAME_W L"\\DosDevices\\TDIQtest"
#define TL_INSTANCE 0
#define MAX_FAST_ENTITY_BUFFER ( sizeof(TDIEntityID) * 20 )
#define MAX_FAST_ADDRESS_BUFFER ( sizeof(IPAddrEntry) * 10 )
TDI_PROVIDER_INFO g_TdiProviderInfo;
TDI_PROVIDER_STATISTICS g_TdiProviderStatistics;
#define ADDR_TAB_COUNT 20
IPAddrEntry g_IPAddressTable[ ADDR_TAB_COUNT ];
IPSNMPInfo g_SnmpInfo;
NTSTATUS
TDIQtestOpen(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
TDIQtestClose(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
VOID
TDIQtestUnload(
IN PDRIVER_OBJECT DriverObject
);
VOID
DoQueryProviderInfoTest( void )
{
NTSTATUS Status;
//
// Query Tcp Provider Information
//
Status = KS_QueryProviderInfo(
TCP_DEVICE_NAME_W,
&g_TdiProviderInfo
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderInfo(
TCP_DEVICE_NAME_W,
&g_TdiProviderInfo
);
}
//
// Query Udp Provider Information
//
Status = KS_QueryProviderInfo(
UDP_DEVICE_NAME_W,
&g_TdiProviderInfo
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderInfo(
UDP_DEVICE_NAME_W,
&g_TdiProviderInfo
);
}
//
// Query An Example RawIp Provider Information
//
Status = KS_QueryProviderInfo(
L"\\Device\\RawIp\\11",
&g_TdiProviderInfo
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderInfo(
L"\\Device\\RawIp\\11",
&g_TdiProviderInfo
);
}
//
// Query AtalkDdp Provider Information
//
Status = KS_QueryProviderInfo(
ATALK_DDP_DEVICE_NAME_W,
&g_TdiProviderInfo
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderInfo(
ATALK_DDP_DEVICE_NAME_W,
&g_TdiProviderInfo
);
}
//
// Query AtalkAdsp Provider Information
//
Status = KS_QueryProviderInfo(
ATALK_ADSP_DEVICE_NAME_W,
&g_TdiProviderInfo
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderInfo(
ATALK_ADSP_DEVICE_NAME_W,
&g_TdiProviderInfo
);
}
//
// Query AtalkAspClient Provider Information
//
Status = KS_QueryProviderInfo(
ATALK_ASP_CLIENT_DEVICE_NAME_W,
&g_TdiProviderInfo
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderInfo(
ATALK_ASP_CLIENT_DEVICE_NAME_W,
&g_TdiProviderInfo
);
}
//
// Query AtalkAspServer Provider Information
//
Status = KS_QueryProviderInfo(
ATALK_ASP_SERVER_DEVICE_NAME_W,
&g_TdiProviderInfo
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderInfo(
ATALK_ASP_SERVER_DEVICE_NAME_W,
&g_TdiProviderInfo
);
}
//
// Query AtalkPap Provider Information
//
Status = KS_QueryProviderInfo(
ATALK_PAP_DEVICE_NAME_W,
&g_TdiProviderInfo
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderInfo(
ATALK_PAP_DEVICE_NAME_W,
&g_TdiProviderInfo
);
}
#ifdef ZNEVER
//
// Query PCAUSA-Specific Protocols
//
Status = KS_QueryProviderInfo(
L"\\Device\\Nbf_PCASIMMP2",
&g_TdiProviderInfo
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderInfo(
L"\\Device\\Nbf_PCASIMMP2",
&g_TdiProviderInfo
);
}
Status = KS_QueryProviderInfo(
L"\\Device\\NetBT_PCASIMMP2",
&g_TdiProviderInfo
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderInfo(
L"\\Device\\NetBT_PCASIMMP2",
&g_TdiProviderInfo
);
}
#endif // ZNEVER
}
VOID
DoQueryProviderStatisticsTest( void )
{
NTSTATUS Status;
//
// Query Tcp Provider Statistics
//
#ifdef DBG
RtlFillMemory(
&g_TdiProviderStatistics,
sizeof( TDI_PROVIDER_STATISTICS ),
0xFF
);
#endif // DBG
Status = KS_QueryProviderStatistics(
TCP_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderStatistics(
TCP_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
}
//
// Query Udp Provider Statistics
//
#ifdef DBG
RtlFillMemory(
&g_TdiProviderStatistics,
sizeof( TDI_PROVIDER_STATISTICS ),
0xFF
);
#endif // DBG
Status = KS_QueryProviderStatistics(
UDP_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderStatistics(
UDP_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
}
//
// Query An Example RawIp Provider Statistics
//
#ifdef DBG
RtlFillMemory(
&g_TdiProviderStatistics,
sizeof( TDI_PROVIDER_STATISTICS ),
0xFF
);
#endif // DBG
Status = KS_QueryProviderStatistics(
L"\\Device\\RawIp\\11",
&g_TdiProviderStatistics
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderStatistics(
L"\\Device\\RawIp\\11",
&g_TdiProviderStatistics
);
}
//
// Query AtalkDdp Provider Statistics
//
#ifdef DBG
RtlFillMemory(
&g_TdiProviderStatistics,
sizeof( TDI_PROVIDER_STATISTICS ),
0xFF
);
#endif // DBG
Status = KS_QueryProviderStatistics(
ATALK_DDP_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderStatistics(
ATALK_DDP_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
}
//
// Query AtalkAdsp Provider Statistics
//
#ifdef DBG
RtlFillMemory(
&g_TdiProviderStatistics,
sizeof( TDI_PROVIDER_STATISTICS ),
0xFF
);
#endif // DBG
Status = KS_QueryProviderStatistics(
ATALK_ADSP_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderStatistics(
ATALK_ADSP_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
}
//
// Query AtalkAspClient Provider Statistics
//
#ifdef DBG
RtlFillMemory(
&g_TdiProviderStatistics,
sizeof( TDI_PROVIDER_STATISTICS ),
0xFF
);
#endif // DBG
Status = KS_QueryProviderStatistics(
ATALK_ASP_CLIENT_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderStatistics(
ATALK_ASP_CLIENT_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
}
//
// Query AtalkAspServer Provider Statistics
//
#ifdef DBG
RtlFillMemory(
&g_TdiProviderStatistics,
sizeof( TDI_PROVIDER_STATISTICS ),
0xFF
);
#endif // DBG
Status = KS_QueryProviderStatistics(
ATALK_ASP_SERVER_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
if(NT_SUCCESS(Status))
{
DEBUG_DumpProviderStatistics(
ATALK_ASP_SERVER_DEVICE_NAME_W,
&g_TdiProviderStatistics
);
}
//
// Query AtalkPap Provider Statistics
//
#ifdef DBG
RtlFillMemory(
&g_TdiProviderStatistics,
sizeof( TDI_PROVIDER_STATISTICS ),
0xFF
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?