91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 13.79MB
    文件類型: .7z
    金幣: 1
    下載: 0 次
    發布日期: 2023-08-04
  • 語言: 其他
  • 標簽: Delphi??

資源簡介

NetFilter SDK 1.4.0.0 + ProtocolFilters 1.0.8.1 - Full Sources.7z

資源截圖

代碼片段和文件信息

//
//? NetFilterSDK?
//? Copyright?(C)?2009?Vitaly?Sidorov
// All?rights?reserved.
//
// This?file?is?a?part?of?the?NetFilter?SDK.
// The?code?and?information?is?provided?“as-is“?without
// warranty?of?any?kind?either?expressed?or?implied.
//


#include?“stdinc.h“
#include?“addr.h“
#include?“gvars.h“
#include?“mempools.h“
#include?“tcpconn.h“
#include?“tcprecv.h“
#include?“tcpsend.h“
#include?“udprecv.h“
#include?“udpsend.h“
#include?“packet.h“
#include?“ctrlio.h“

#ifdef?_WPPTRACE
#include?“addr.tmh“
#endif

#define?MAX_ADDR_POOL_SIZE 0

static?NTSTATUS?addr_setConnInfo(PNF_UDP_CONN_INFO?pci?PADDROBJ?pAddr)
{
memset(pci?0?sizeof(NF_UDP_CONN_INFO));

pci->processId?=?(ULONG)pAddr->processId;
pci->ip_family?=?*(short*)pAddr->localAddr;

RtlCopyMemory(pci->localAddress?pAddr->localAddr?sizeof(pci->localAddress));

return?STATUS_SUCCESS;
}


static?PADDROBJ?addr_alloc(PIO_STACK_LOCATION?irpSp?void?*?context?int?protocol?PDEVICE_object?pLowerDevice)
{
PADDROBJ?pAddr;

pAddr?=?(PADDROBJ)mp_alloc(sizeof(ADDROBJ));

if?(!pAddr)
{
return?NULL;
}

#if?DBG
g_vars.nAddr++;
KdPrint((“[counter]?nAddr=%d\n“?g_vars.nAddr));
#endif

RtlZeroMemory(pAddr?sizeof(ADDROBJ));

pAddr->lowerDevice?=?pLowerDevice;

pAddr->fileobject?=?(HASH_ID)irpSp->Fileobject;
pAddr->protocol?=?protocol;

//?Assign?next?unique?identifier

g_vars.nextAddrId++;

while?((g_vars.nextAddrId?==?0)?||?
ht_find_entry(g_vars.phtAddrById?g_vars.nextAddrId))
{
g_vars.nextAddrId++;
}

pAddr->id?=?g_vars.nextAddrId;

pAddr->processId?=?*(ULONG*)&context;

sl_init(&pAddr->lock);

if?(protocol?==?IPPROTO_UDP)
{
InitializeListHead(&pAddr->pendedReceivedPackets);
InitializeListHead(&pAddr->receivedPackets);
InitializeListHead(&pAddr->pendedReceiveRequests);

InitializeListHead(&pAddr->pendedSendPackets);
InitializeListHead(&pAddr->sendPackets);
InitializeListHead(&pAddr->pendedSendRequests);

InitializeListHead(&pAddr->pendedConnectRequest);
}

return?pAddr;
}

void?addr_free_queues(PADDROBJ?pAddr)
{
PNF_PACKET pPacket;
PLIST_ENTRY pListEntry;
PIRP irp;
KIRQL irqld;

if?(!pAddr)
return;

KdPrint((DPREFIX“addr_free_queues[%I64d]\n“?pAddr->id));

if?(pAddr->protocol?==?IPPROTO_UDP)
{
sl_lock(&pAddr->lock?&irqld);

while?(!IsListEmpty(&pAddr->receivedPackets))
{
pPacket?=?(PNF_PACKET)RemoveHeadList(&pAddr->receivedPackets);
????????
KdPrint((DPREFIX“addr_free[%I64d]:?Orphan?receivedPackets?NF_PACKET?-?status=0x%8.8x?bytes=%d\n“
pAddr->id?pPacket->ioStatus?pPacket->dataSize?));
????????
nf_packet_free(pPacket);
}

while?(!IsListEmpty(&pAddr->pendedReceivedPackets))
{
pPacket?=?(PNF_PACKET)RemoveHeadList(&pAddr->pendedReceivedPackets);
????????
KdPrint((DPREFIX“addr_free[%I64d]:?Orphan?pendedReceivedPackets?NF_PACKET?-?status=0x%8.8x?bytes=%d\n“

評論

共有 條評論