问个问题,大家别见怪。现在正在开发网络安全系统。
我下载了一个名为捕获网络TCP/IP数据包的原代码,也就是   TcpIpDog
编译生成 dll文件,导出函数为:WSPStartup。
可是鄙人不才,编译出了文件,也不知道应该怎么使用才能捕获数据包。谁能告诉我
答案?应该怎么使用才可以。代码共享如下,希望对其它人有帮助:
// DLL导出的函数int WSPAPI WSPStartup(
WORD wVersionRequested,
LPWSPDATA lpWSPData,
LPWSAPROTOCOL_INFOW lpProtocolInfo,
WSPUPCALLTABLE upcallTable,
LPWSPPROC_TABLE lpProcTable
)
{
ODS(_T("==> WSPStartup...")); TCHAR sLibraryPath[512];
    LPWSPSTARTUP        WSPStartupFunc      = NULL;
HMODULE hLibraryHandle = NULL;
    INT                 ErrorCode           = 0;  if (!GetHookProvider(lpProtocolInfo, sLibraryPath)
|| (hLibraryHandle = LoadLibrary(sLibraryPath)) == NULL
|| (WSPStartupFunc = (LPWSPSTARTUP)GetProcAddress(
hLibraryHandle, "WSPStartup")) == NULL
)
return WSAEPROVIDERFAILEDINIT; PrintProtocolInfo(lpProtocolInfo, sLibraryPath); if ((ErrorCode = WSPStartupFunc(wVersionRequested, lpWSPData
, lpProtocolInfo, upcallTable, lpProcTable)) != ERROR_SUCCESS)
return ErrorCode;

EnterCriticalSection(&gCriticalSection); NextProcTable = *lpProcTable; lpProcTable->lpWSPSocket = WSPSocket;
lpProcTable->lpWSPCloseSocket = WSPCloseSocket;
lpProcTable->lpWSPConnect = WSPConnect;
lpProcTable->lpWSPAccept = WSPAccept;
lpProcTable->lpWSPSend = WSPSend;
lpProcTable->lpWSPSendTo = WSPSendTo;
lpProcTable->lpWSPRecv = WSPRecv;
lpProcTable->lpWSPRecvFrom = WSPRecvFrom; lpProcTable->lpWSPAddressToString = WSPAddressToString;
lpProcTable->lpWSPAsyncSelect  = WSPAsyncSelect;
lpProcTable->lpWSPBind  = WSPBind;
lpProcTable->lpWSPCancelBlockingCall  = WSPCancelBlockingCall;
lpProcTable->lpWSPCleanup  = WSPCleanup;
lpProcTable->lpWSPDuplicateSocket   = WSPDuplicateSocket;
lpProcTable->lpWSPEnumNetworkEvents  = WSPEnumNetworkEvents;
lpProcTable->lpWSPEventSelect  = WSPEventSelect;
lpProcTable->lpWSPGetOverlappedResult  = WSPGetOverlappedResult;
lpProcTable->lpWSPGetPeerName  = WSPGetPeerName;
lpProcTable->lpWSPGetQOSByName  = WSPGetQOSByName;
lpProcTable->lpWSPGetSockName  = WSPGetSockName;
lpProcTable->lpWSPGetSockOpt  = WSPGetSockOpt;
lpProcTable->lpWSPIoctl  = WSPIoctl;
lpProcTable->lpWSPJoinLeaf  = WSPJoinLeaf;
lpProcTable->lpWSPListen  = WSPListen;
lpProcTable->lpWSPRecvDisconnect  = WSPRecvDisconnect;
lpProcTable->lpWSPSelect  = WSPSelect;
lpProcTable->lpWSPSendDisconnect  = WSPSendDisconnect;
lpProcTable->lpWSPSetSockOpt  = WSPSetSockOpt;
lpProcTable->lpWSPShutdown  = WSPShutdown;
lpProcTable->lpWSPStringToAddress  = WSPStringToAddress; LeaveCriticalSection(&gCriticalSection); return 0;
}