内核网络通信

http://www.mengwuji.net/thread-3040-1-1.html

 

NTSTATUS TestConnect()
{
	HANDLE Socket = NULL;
	PFILE_OBJECT pSocketObject = NULL;
	NTSTATUS st = STATUS_UNSUCCESSFUL;
	ULONG Address = 0x7F000001;
	USHORT Port = 0x5000;	
	LARGE_INTEGER Timeout;

	ULONG RecvSize = 1024;

	CHAR Packet[1024] = {0};
	CHAR szSendMessage[] = "娘子!\n";

	st = CreateAddress(&Socket,&pSocketObject);
	if (!NT_SUCCESS(st))
	{
		return st;
	}

	st = TdiSendDatagram(pSocketObject,Port,Address,szSendMessage,strlen(szSendMessage));
	if (st != STATUS_SUCCESS)
	{
		ObDereferenceObject(pSocketObject);
		ZwClose(Socket);
		return st;
	}

	Timeout.QuadPart = 10*1000*(-10000);	//10秒
	st = TdiReceiveDatagram(pSocketObject,Port,&Address,&Packet,&RecvSize,&Timeout);
	if (st != STATUS_SUCCESS)
	{
		ObDereferenceObject(pSocketObject);
		ZwClose(Socket);
		return st;
	}

	KdPrint(("%s",Packet));
	//这里随便你做什么啦

	ObDereferenceObject(pSocketObject);
	ZwClose(Socket);
	return st;
}

  

posted on 2016-10-08 20:15  yifi  阅读(257)  评论(0编辑  收藏  举报

导航