亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? network.c

?? 臭氧層主動防御系統驅動源代碼!臭氧層主動防御系統驅動源代碼!
?? C
?? 第 1 頁 / 共 2 頁
字號:
				}
			}

			break;
		}

		case IRP_MJ_CLEANUP:
			LOG(LOG_SS_NETWORK, LOG_PRIORITY_VERBOSE, ("IRP_MJ_CLEANUP\n"));
			break;

		case IRP_MJ_CLOSE:
			LOG(LOG_SS_NETWORK, LOG_PRIORITY_VERBOSE, ("IRP_MJ_CLOSE\n"));
			break;

		default:
			LOG(LOG_SS_NETWORK, LOG_PRIORITY_VERBOSE, ("TDIDispatch: default switch case triggered\n"));
			break;
	}


	if (*status == STATUS_ACCESS_DENIED)
	{
		pIrp->IoStatus.Status = STATUS_ACCESS_DENIED;
		IoCompleteRequest (pIrp, IO_NO_INCREMENT);

		HOOK_TDI_EXIT(TRUE);
	}


	if (Callback.Routine)
	{
		LOG(LOG_SS_NETWORK, LOG_PRIORITY_DEBUG, ("TDI Callback.Routine\n"));

		//XXX IoCopyCurrentIrpStackLocationToNext()
		IoSetCompletionRoutine(pIrp, Callback.Routine, Callback.Context, TRUE, TRUE, TRUE);
	}
	else
	{
		// Set up a completion routine to handle the bubbling of the "pending" mark of an IRP
//		IoSetCompletionRoutine(pIrp, GenericCompletion, NULL, TRUE, TRUE, TRUE);

		IoSkipCurrentIrpStackLocation(pIrp);
	}


	if (DeviceType == NET_DEVICE_TYPE_TCP)
	{
		*status = IoCallDriver(pTcpDeviceOriginal, pIrp);
	}
	else if (DeviceType == NET_DEVICE_TYPE_UDP)
	{
		*status = IoCallDriver(pUdpDeviceOriginal, pIrp);
	}
	else if (DeviceType == NET_DEVICE_TYPE_IP)
	{
		*status = IoCallDriver(pIpDeviceOriginal, pIrp);
	}
	else
	{
		LOG(LOG_SS_NETWORK, LOG_PRIORITY_DEBUG, ("TDIDispatch: Unknown device type\n"));
	}


	HOOK_TDI_EXIT(TRUE);
}



NTSTATUS
TDICreateAddressCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP pIrp, IN PVOID Context)
{
	return STATUS_SUCCESS;
}



NTSTATUS
TDICreate(IN PDEVICE_OBJECT pDeviceObject, IN PIRP pIrp, IN PIO_STACK_LOCATION pIrpStack, OUT PTDI_CALLBACK pCompletion)
{
	FILE_FULL_EA_INFORMATION	*ea = (FILE_FULL_EA_INFORMATION *) pIrp->AssociatedIrp.SystemBuffer;


	HOOK_ROUTINE_ENTER();


	LOG(LOG_SS_NETWORK, LOG_PRIORITY_VERBOSE, ("TDICreate(%x %x %x)\n", pIrp, pIrpStack, ea));


	/*
	 * From DDK (TdiDispatchCreate):
	 *
	 * Irp->AssociatedIrp.SystemBuffer
	 *
	 * Pointer to a FILE_FULL_EA_INFORMATION-structured buffer if the file object represents an address or a
	 * connection endpoint to be opened. 
	 * For an address, the EaName member is set to the system-defined constant TdiTransportAddress and the EA value
	 * following the EaName array is of type TRANSPORT_ADDRESS, set up by the client to specify the address to be
	 * opened. For some transports, this value can be a symbolic netBIOS or DNS name to be translated by the transport. 
	 *
	 * For a connection endpoint, the EaName member is set to the system-defined constant TdiConnectionContext and
	 * the EA value following the EaName array is a client-supplied handle, opaque to the transport driver. The
	 * transport must save this handle and subsequently pass it back to the client's registered event handlers for
	 * this connection. 
	 *
	 * If the given file object represents a control channel, this member is NULL. 
	 */

	if (ea == NULL)
	{
		LOG(LOG_SS_NETWORK, LOG_PRIORITY_VERBOSE, ("TDICreate: Control channel\n"));
		HOOK_ROUTINE_EXIT(STATUS_SUCCESS);
	}


	if (! MmIsAddressValid(ea) || ea->EaName == NULL || ! MmIsAddressValid(ea->EaName))
	{
		LOG(LOG_SS_NETWORK, LOG_PRIORITY_DEBUG, ("TDICreate: MmIsAddressValid() failed\n"));
		HOOK_ROUTINE_EXIT(STATUS_SUCCESS);
	}


	if (ea->EaNameLength == TDI_CONNECTION_CONTEXT_LENGTH &&
				memcmp(ea->EaName, TdiConnectionContext, TDI_CONNECTION_CONTEXT_LENGTH) == 0)
	{	
		CONNECTION_CONTEXT conn_ctx = *(CONNECTION_CONTEXT *) (ea->EaName + ea->EaNameLength + 1);

		if (conn_ctx)
			LOG(LOG_SS_NETWORK, LOG_PRIORITY_VERBOSE, ("TDI Connection object 0x%x %x\n", conn_ctx, * (PULONG) conn_ctx));

		HOOK_ROUTINE_EXIT(STATUS_SUCCESS);
	}


	// NOTE: for RawIp you can extract protocol number from irps->FileObject->FileName

	if (ea->EaNameLength == TDI_TRANSPORT_ADDRESS_LENGTH &&
		memcmp(ea->EaName, TdiTransportAddress, TDI_TRANSPORT_ADDRESS_LENGTH) == 0)
	{
		PTRANSPORT_ADDRESS	pTransportAddress;
		PTA_ADDRESS			pAddress;
		PIRP				QueryIrp;
		int					i;


		pTransportAddress = (PTRANSPORT_ADDRESS) (ea->EaName + ea->EaNameLength + 1);
		pAddress = pTransportAddress->Address;

		LOG(LOG_SS_NETWORK, LOG_PRIORITY_VERBOSE, ("TDICreate: TDI Address object. Num %d\n", pTransportAddress->TAAddressCount));


		for (i = 0; i < pTransportAddress->TAAddressCount; i++)
		{
			LOG(LOG_SS_NETWORK, LOG_PRIORITY_VERBOSE, ("TDICreate: TDI Address %d: %x %x\n", i, pAddress->AddressLength, pAddress->AddressType));


			if (pAddress->AddressType == TDI_ADDRESS_TYPE_IP)
			{
				PTDI_ADDRESS_IP		ip = (PTDI_ADDRESS_IP) &pAddress->Address;
				CHAR				NETWORKNAME[MAX_PATH];
				PCHAR				FunctionName = "TDICreate";


				if (ip->sin_port != 0)
				{
					LOG(LOG_SS_NETWORK, LOG_PRIORITY_DEBUG, ("%d TDICreate: Bind IP %x:%u (%s)\n", (ULONG) PsGetCurrentProcessId(), ntohl(ip->in_addr), ntohs(ip->sin_port), inet_ntoa2(ip->in_addr)));

					itoa( ntohs(ip->sin_port), NETWORKNAME, 10 );
					//inet_ntoa(ip->in_addr, NETWORKNAME);

					if (LearningMode == FALSE)
					{
						POLICY_CHECK_OPTYPE_NAME(NETWORK, OP_BIND);
					}
					else
					{
						// learning mode
						AddRule(RULE_NETWORK, NETWORKNAME, OP_BIND);
					}
				}
				else
				{
					LOG(LOG_SS_NETWORK, LOG_PRIORITY_VERBOSE, ("%d TDICreate: IP & port are both zero\n", (ULONG) PsGetCurrentProcessId()));
				}
			}
			else
			{
				//XXX fail if only IP network addresses are allowed.
			}

			pAddress += 1;
		}

		//XXX reread WDM ch 5.3 "COmpleting I/O requests"
/*
		QueryIrp = TdiBuildInternalDeviceControlIrp(TDI_QUERY_INFORMATION, pDeviceObject,
													pIrpStack->FileObject, NULL, NULL);
		if (QueryIrp == NULL)
		{
			LOG(LOG_SS_NETWORK, LOG_PRIORITY_DEBUG, ("TDICreate: QueryIrp is NULL\n"));
			return FALSE;
		}

		pCompletion->Routine = TDICreateAddressCompletion;
		pCompletion->Context = QueryIrp;
*/
	}


	HOOK_ROUTINE_EXIT(STATUS_SUCCESS);
}



/*
 * InstallNetworkHooks()
 *
 * Description:
 *		.
 *
 *		NOTE: Called once during driver initialization (DriverEntry()).
 *			  There is no need to cleanup in case a failure since RemoveNetworkHooks() will be called later.
 *
 * Parameters:
 *		pDriverObject - pointer to a driver object that represents this driver.
 *
 * Returns:
 *		STATUS_SUCCESS to indicate success or an NTSTATUS error code if failed.
 */

NTSTATUS
InstallNetworkHooks(PDRIVER_OBJECT pDriverObject)
{
	UNICODE_STRING	Name;
	NTSTATUS		status;


	status = IoCreateDevice(pDriverObject, 0, NULL, FILE_DEVICE_UNKNOWN, 0, TRUE, &pTcpDevice);
	if (! NT_SUCCESS(status))
	{
		LOG(LOG_SS_NETWORK, LOG_PRIORITY_DEBUG, ("InstallNetworkHooks: IoCreateDevice(tcp) failed\n"));
		return status;
	}


	status = IoCreateDevice(pDriverObject, 0, NULL, FILE_DEVICE_UNKNOWN, 0, TRUE, &pUdpDevice);
	if (! NT_SUCCESS(status))
	{
		LOG(LOG_SS_NETWORK, LOG_PRIORITY_DEBUG, ("InstallNetworkHooks: IoCreateDevice(udp) failed\n"));
		return status;
	}


	status = IoCreateDevice(pDriverObject, 0, NULL, FILE_DEVICE_UNKNOWN, 0, TRUE, &pIpDevice);
	if (! NT_SUCCESS(status))
	{
		LOG(LOG_SS_NETWORK, LOG_PRIORITY_DEBUG, ("InstallNetworkHooks: IoCreateDevice(udp) failed\n"));
		return status;
	}


	RtlInitUnicodeString(&Name, L"\\Device\\Tcp");

	status = IoAttachDevice(pTcpDevice, &Name, &pTcpDeviceOriginal);
	if (! NT_SUCCESS(status))
	{
		LOG(LOG_SS_NETWORK, LOG_PRIORITY_DEBUG, ("InstallNetworkHooks: IoAttachDevice(\\Device\\Tcp) failed\n"));
		return status;
	}


	RtlInitUnicodeString(&Name, L"\\Device\\Udp");

	status = IoAttachDevice(pUdpDevice, &Name, &pUdpDeviceOriginal);
	if (! NT_SUCCESS(status))
	{
		LOG(LOG_SS_NETWORK, LOG_PRIORITY_DEBUG, ("InstallNetworkHooks: IoAttachDevice(\\Device\\Udp) failed\n"));
		return status;
	}


	RtlInitUnicodeString(&Name, L"\\Device\\Ip");

	status = IoAttachDevice(pIpDevice, &Name, &pIpDeviceOriginal);
	if (! NT_SUCCESS(status))
	{
		LOG(LOG_SS_NETWORK, LOG_PRIORITY_DEBUG, ("InstallNetworkHooks: IoAttachDevice(\\Device\\Ip) failed\n"));
		return status;
	}


	pTcpDevice->StackSize = pTcpDeviceOriginal->StackSize + 1;
	// XXX Flags &= ~DO_DEVICE_INITIALIZING;
	pTcpDevice->Flags |= pTcpDeviceOriginal->Flags & (DO_BUFFERED_IO | DO_DIRECT_IO | DO_POWER_PAGABLE | DO_POWER_INRUSH) & ~DO_DEVICE_INITIALIZING;
	pTcpDevice->DeviceType = pTcpDeviceOriginal->DeviceType;
	pTcpDevice->Characteristics = pTcpDeviceOriginal->Characteristics;


	pUdpDevice->StackSize = pUdpDeviceOriginal->StackSize + 1;
	pUdpDevice->Flags |= pUdpDeviceOriginal->Flags & (DO_BUFFERED_IO | DO_DIRECT_IO | DO_POWER_PAGABLE | DO_POWER_INRUSH) & ~DO_DEVICE_INITIALIZING;
	pUdpDevice->DeviceType = pUdpDeviceOriginal->DeviceType;
	pUdpDevice->Characteristics = pUdpDeviceOriginal->Characteristics;


	pIpDevice->StackSize = pIpDeviceOriginal->StackSize + 1;
	pIpDevice->Flags |= pIpDeviceOriginal->Flags & (DO_BUFFERED_IO | DO_DIRECT_IO | DO_POWER_PAGABLE | DO_POWER_INRUSH) & ~DO_DEVICE_INITIALIZING;
	pIpDevice->DeviceType = pIpDeviceOriginal->DeviceType;
	pIpDevice->Characteristics = pIpDeviceOriginal->Characteristics;


	return STATUS_SUCCESS;
}



/*
 * RemoveNetworkHooks()
 *
 * Description:
 *		Detach from all network devices.
 *
 * Parameters:
 *		pDriverObject - pointer to a driver object that represents this driver.
 *
 * Returns:
 *		Nothing.
 */

void
RemoveNetworkHooks(PDRIVER_OBJECT pDriverObject)
{
//	int	i;

	//XXX is this necessary? we detach so we should not receive any network IRPs
//	if (pDriverObject && pTcpDevice && pTcpDeviceOriginal)
//		for (i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++)
//			pDriverObject->MajorFunction[i] = pTcpDeviceOriginal->DriverObject->MajorFunction[i];


	if (pTcpDeviceOriginal != NULL)
		IoDetachDevice(pTcpDeviceOriginal);

	if (pUdpDeviceOriginal != NULL)
		IoDetachDevice(pUdpDeviceOriginal);

	if (pIpDeviceOriginal != NULL)
		IoDetachDevice(pIpDeviceOriginal);


	if (pTcpDevice != NULL)
		IoDeleteDevice(pTcpDevice);

	if (pUdpDevice != NULL)
		IoDeleteDevice(pUdpDevice);

	if (pIpDevice != NULL)
		IoDeleteDevice(pIpDevice);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃网址入口| 丝袜a∨在线一区二区三区不卡 | 亚洲精品成人a在线观看| av欧美精品.com| 国产精品免费久久| 色综合网站在线| 婷婷开心激情综合| 精品福利二区三区| 成人av第一页| 亚洲国产日韩精品| 日韩一区二区免费视频| 大美女一区二区三区| 亚洲人成亚洲人成在线观看图片 | 国产精品色在线观看| 欧美在线观看视频一区二区| 日韩高清一区二区| 久久久欧美精品sm网站| 99久久伊人久久99| 天堂va蜜桃一区二区三区漫画版| 欧美成人a视频| av在线不卡网| 美女视频网站久久| 国产精品久久午夜| 7777精品伊人久久久大香线蕉的 | 欧美人妇做爰xxxⅹ性高电影| 久久国产福利国产秒拍| 中文字幕制服丝袜成人av | 色噜噜偷拍精品综合在线| 天堂影院一区二区| 国产精品久久久久影视| 91精品福利在线一区二区三区| 国产精品亚洲人在线观看| 亚洲一区二区三区视频在线| 2017欧美狠狠色| 欧美日韩精品福利| 99在线精品一区二区三区| 久久精品国产一区二区| 亚洲另类中文字| 国产日韩三级在线| 日韩精品综合一本久道在线视频| 一道本成人在线| 懂色一区二区三区免费观看| 美女精品自拍一二三四| 一级精品视频在线观看宜春院| 国产亚洲成年网址在线观看| 91麻豆精品国产自产在线观看一区| 波多野结衣视频一区| 国产一区二区三区国产| 水蜜桃久久夜色精品一区的特点| 中文字幕一区二区三区蜜月| 精品国产欧美一区二区| 欧美午夜精品久久久| 91日韩一区二区三区| 国产成人午夜视频| 国产九色精品成人porny| 美女脱光内衣内裤视频久久影院| 亚洲综合一区在线| 亚洲视频资源在线| 国产精品美女www爽爽爽| 国产喂奶挤奶一区二区三区| 欧美电影免费观看高清完整版| 欧美日韩成人一区| 欧美在线你懂得| 欧美揉bbbbb揉bbbbb| 欧美自拍偷拍午夜视频| 日本高清成人免费播放| 91老师片黄在线观看| 91在线视频免费观看| 东方欧美亚洲色图在线| 国产一区二区三区精品欧美日韩一区二区三区 | 久久精品综合网| 欧美mv日韩mv亚洲| 日韩一区二区影院| 日韩欧美亚洲一区二区| 日韩女优制服丝袜电影| 日韩一区二区在线免费观看| 精品少妇一区二区三区在线播放| 亚洲视频网在线直播| 国产精品久久久爽爽爽麻豆色哟哟| 国产三级久久久| 国产精品乱人伦一区二区| 17c精品麻豆一区二区免费| 亚洲人成网站精品片在线观看| 中文字幕亚洲区| 一区二区在线观看免费 | 日韩精品亚洲一区二区三区免费| 一区二区三区电影在线播| 亚洲午夜视频在线观看| 日韩电影免费在线| 国产一区在线精品| youjizz国产精品| 一本大道久久精品懂色aⅴ| 欧美在线观看视频一区二区三区| 9191国产精品| 国产欧美精品一区aⅴ影院| 亚洲三级在线播放| 日韩一区欧美二区| 国产二区国产一区在线观看| 97aⅴ精品视频一二三区| 欧美日韩综合一区| 精品国产91洋老外米糕| 国产精品三级电影| 五月婷婷久久丁香| 国产一区二区三区高清播放| 99久久精品国产一区二区三区| 欧美丝袜丝交足nylons| 久久综合色婷婷| 亚洲你懂的在线视频| 久久精品99国产精品| 99久久免费精品高清特色大片| 欧美丰满一区二区免费视频| 久久久噜噜噜久噜久久综合| 亚洲蜜臀av乱码久久精品蜜桃| 青青青伊人色综合久久| av在线一区二区| 日韩欧美一区二区免费| 成人免费视频在线观看| 精品一区二区三区免费观看| 91免费在线播放| 精品国产乱码久久久久久老虎 | 国内成人自拍视频| 97成人超碰视| 久久亚洲春色中文字幕久久久| 亚洲黄色小说网站| 国产成人一区二区精品非洲| 在线不卡一区二区| 亚洲三级电影网站| 国产精品香蕉一区二区三区| 欧美日韩一级黄| 日韩美女视频一区二区| 国产一区二区在线视频| 欧美少妇一区二区| 一区视频在线播放| 国产不卡一区视频| 欧美不卡一区二区三区四区| 亚洲一二三四久久| caoporen国产精品视频| 久久亚洲一区二区三区四区| 午夜精品福利久久久| 色婷婷综合视频在线观看| 国产人妖乱国产精品人妖| 卡一卡二国产精品 | 91丨porny丨蝌蚪视频| 精品国产乱码久久久久久牛牛| 亚洲一区成人在线| 成人av网站大全| 欧美激情一区在线| 国产一区视频导航| 日韩午夜在线观看视频| 天天亚洲美女在线视频| 欧美嫩在线观看| 亚洲一区二区三区四区在线| 色哟哟国产精品| 亚洲免费毛片网站| 91丨九色丨尤物| 亚洲精品亚洲人成人网| 91尤物视频在线观看| 亚洲图片激情小说| 99精品视频中文字幕| 亚洲婷婷综合色高清在线| 99久久精品国产精品久久| 综合久久久久久久| av影院午夜一区| 亚洲欧美激情视频在线观看一区二区三区| 喷白浆一区二区| 日韩三级伦理片妻子的秘密按摩| 日本女人一区二区三区| 精品区一区二区| 国产一区二区在线观看视频| 国产性色一区二区| av在线不卡电影| 亚洲一级二级三级在线免费观看| 在线免费观看视频一区| 精品亚洲aⅴ乱码一区二区三区| 日韩亚洲欧美高清| 国产原创一区二区| 亚洲天堂免费看| 91免费国产在线| 亚洲一区在线看| 日韩视频123| 国产成人免费视频精品含羞草妖精| 国产亚洲精品中文字幕| 色婷婷激情久久| 日韩电影在线一区| 国产偷v国产偷v亚洲高清| 成人av资源在线| 亚洲国产日韩一区二区| 日韩三级电影网址| 国产在线播放一区三区四| 中文av一区二区| 欧美性受极品xxxx喷水| 麻豆成人免费电影| 国产精品欧美一区二区三区| 色婷婷av一区二区三区大白胸| 日韩精品一二三区| 中文乱码免费一区二区| 色94色欧美sute亚洲13| 丝瓜av网站精品一区二区| 国产婷婷色一区二区三区在线| 在线观看欧美黄色|