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

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

?? tapdrvr.c

?? 一個Windows下的Linux專用虛擬機
?? C
?? 第 1 頁 / 共 5 頁
字號:
  // to satisfy IRP requests in the IRP queue.  //  // QueueLock is used to lock the packet queue used  // for the TAP-Win32 NIC -> User Space packet flow direction.  //  // All accesses to packet or IRP queues should be  // bracketed by the QueueLock spinlock,  // in order to be SMP-safe.  //========================================================  NdisAllocateSpinLock (&p_Extension->m_QueueLock);  p_Extension->m_AllocatedSpinlocks = TRUE;  p_Extension->m_PacketQueue = QueueInit (PACKET_QUEUE_SIZE);  p_Extension->m_IrpQueue = QueueInit (IRP_QUEUE_SIZE);  if (!p_Extension->m_PacketQueue      || !p_Extension->m_IrpQueue)    {      DEBUGP (("[%s] couldn't alloc TAP queues\n", p_Name));      l_Return = NDIS_STATUS_RESOURCES;      goto cleanup;    }  //========================  // Finalize initialization  //========================  p_Extension->m_TapIsRunning = TRUE;  DEBUGP (("[%s] successfully created TAP device [%s]\n", p_Name,	    p_Extension->m_TapName)); cleanup:  if (l_FreeTapUnicode)    RtlFreeUnicodeString (&l_TapUnicode);  if (l_LinkString.Buffer)    MemFree (l_LinkString.Buffer, NAME_BUFFER_SIZE);  if (l_Dispatch)    MemFree (l_Dispatch, SIZEOF_DISPATCH);  if (l_Return != NDIS_STATUS_SUCCESS)    TapDeviceFreeResources (p_Extension);  return l_Return;}#undef SIZEOF_DISPATCH//========================================================//                      Adapter Control//========================================================NDIS_STATUSAdapterReset (OUT PBOOLEAN p_AddressingReset, IN NDIS_HANDLE p_AdapterContext){  TapAdapterPointer l_Adapter = (TapAdapterPointer) p_AdapterContext;  DEBUGP (("[%s] is resetting\n", NAME (l_Adapter)));  return NDIS_STATUS_SUCCESS;}NDIS_STATUS AdapterReceive  (OUT PNDIS_PACKET p_Packet,   OUT PUINT p_Transferred,   IN NDIS_HANDLE p_AdapterContext,   IN NDIS_HANDLE p_ReceiveContext,   IN UINT p_Offset,   IN UINT p_ToTransfer){  return NDIS_STATUS_SUCCESS;}//==============================================================//                  Adapter Option Query/Modification//==============================================================NDIS_STATUS AdapterQuery(IN NDIS_HANDLE p_AdapterContext, IN NDIS_OID p_OID, IN PVOID p_Buffer, IN ULONG p_BufferLength, OUT PULONG p_BytesWritten, OUT PULONG p_BytesNeeded){  TapAdapterPointer l_Adapter = (TapAdapterPointer) p_AdapterContext;  TapAdapterQuery l_Query, *l_QueryPtr = &l_Query;  NDIS_STATUS l_Status = NDIS_STATUS_SUCCESS;  UINT l_QueryLength = 4;  BOOLEAN lock_succeeded;  NdisZeroMemory (&l_Query, sizeof (l_Query));  switch (p_OID)    {      //===================================================================      //                       Vendor & Driver version Info      //===================================================================    case OID_GEN_VENDOR_DESCRIPTION:      l_QueryPtr = (TapAdapterQueryPointer) PRODUCT_STRING;      l_QueryLength = strlen (PRODUCT_STRING) + 1;      break;    case OID_GEN_VENDOR_ID:      l_Query.m_Long = 0xffffff;      break;    case OID_GEN_DRIVER_VERSION:      l_Query.m_Short =	(((USHORT) TAP_NDIS_MAJOR_VERSION) << 8 | (USHORT)	 TAP_NDIS_MINOR_VERSION);      l_QueryLength = sizeof (unsigned short);      break;    case OID_GEN_VENDOR_DRIVER_VERSION:      l_Query.m_Long =	(((USHORT) TAP_DRIVER_MAJOR_VERSION) << 8 | (USHORT)	 TAP_DRIVER_MINOR_VERSION);      break;      //=================================================================      //                             Statistics      //=================================================================    case OID_GEN_RCV_NO_BUFFER:      l_Query.m_Long = 0;      break;    case OID_802_3_RCV_ERROR_ALIGNMENT:      l_Query.m_Long = 0;      break;    case OID_802_3_XMIT_ONE_COLLISION:      l_Query.m_Long = 0;      break;    case OID_802_3_XMIT_MORE_COLLISIONS:      l_Query.m_Long = 0;      break;    case OID_GEN_XMIT_OK:      l_Query.m_Long = l_Adapter->m_Tx;      break;    case OID_GEN_RCV_OK:      l_Query.m_Long = l_Adapter->m_Rx;      break;    case OID_GEN_XMIT_ERROR:      l_Query.m_Long = l_Adapter->m_TxErr;      break;    case OID_GEN_RCV_ERROR:      l_Query.m_Long = l_Adapter->m_RxErr;      break;      //===================================================================      //                       Device & Protocol Options      //===================================================================    case OID_GEN_SUPPORTED_LIST:      l_QueryPtr = (TapAdapterQueryPointer) g_SupportedOIDList;      l_QueryLength = sizeof (g_SupportedOIDList);      break;    case OID_GEN_MAC_OPTIONS:      // This MUST be here !!!      l_Query.m_Long = (NDIS_MAC_OPTION_RECEIVE_SERIALIZED			| NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA			| NDIS_MAC_OPTION_NO_LOOPBACK			| NDIS_MAC_OPTION_TRANSFERS_NOT_PEND);      break;    case OID_GEN_CURRENT_PACKET_FILTER:      l_Query.m_Long =	(NDIS_PACKET_TYPE_ALL_LOCAL |	 NDIS_PACKET_TYPE_BROADCAST |	 NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_ALL_FUNCTIONAL);      break;    case OID_GEN_PROTOCOL_OPTIONS:      l_Query.m_Long = 0;      break;      //==================================================================      //                            Device Info      //==================================================================    case OID_GEN_MEDIA_CONNECT_STATUS:      l_Query.m_Long = l_Adapter->m_MediaState	? NdisMediaStateConnected : NdisMediaStateDisconnected;      break;    case OID_GEN_HARDWARE_STATUS:      l_Query.m_HardwareStatus = NdisHardwareStatusReady;      l_QueryLength = sizeof (NDIS_HARDWARE_STATUS);      break;    case OID_GEN_MEDIA_SUPPORTED:    case OID_GEN_MEDIA_IN_USE:      l_Query.m_Medium = l_Adapter->m_Medium;      l_QueryLength = sizeof (NDIS_MEDIUM);      break;    case OID_GEN_PHYSICAL_MEDIUM:      l_Query.m_PhysicalMedium = NdisPhysicalMediumUnspecified;      l_QueryLength = sizeof (NDIS_PHYSICAL_MEDIUM);      break;          case OID_GEN_LINK_SPEED:      l_Query.m_Long = 1000000; // rate / 100 bps      break;    case OID_802_3_PERMANENT_ADDRESS:    case OID_802_3_CURRENT_ADDRESS:      COPY_MAC (l_Query.m_MacAddress, l_Adapter->m_MAC);      l_QueryLength = sizeof (MACADDR);      break;      //==================================================================      //                             Limits      //==================================================================    case OID_GEN_MAXIMUM_SEND_PACKETS:      l_Query.m_Long = 1;      break;    case OID_802_3_MAXIMUM_LIST_SIZE:      l_Query.m_Long = NIC_MAX_MCAST_LIST;      break;    case OID_GEN_CURRENT_LOOKAHEAD:      l_Query.m_Long = l_Adapter->m_Lookahead;      break;    case OID_GEN_MAXIMUM_LOOKAHEAD:    case OID_GEN_MAXIMUM_TOTAL_SIZE:    case OID_GEN_RECEIVE_BUFFER_SPACE:    case OID_GEN_RECEIVE_BLOCK_SIZE:      l_Query.m_Long = DEFAULT_PACKET_LOOKAHEAD;      break;    case OID_GEN_MAXIMUM_FRAME_SIZE:    case OID_GEN_TRANSMIT_BLOCK_SIZE:    case OID_GEN_TRANSMIT_BUFFER_SPACE:      l_Query.m_Long = l_Adapter->m_MTU;      break;    case OID_PNP_CAPABILITIES:      do	{	  PNDIS_PNP_CAPABILITIES pPNPCapabilities;	  PNDIS_PM_WAKE_UP_CAPABILITIES pPMstruct;	  if (p_BufferLength >= sizeof (NDIS_PNP_CAPABILITIES))	    {	      pPNPCapabilities = (PNDIS_PNP_CAPABILITIES) (p_Buffer);	      //	      // Setting up the buffer to be returned	      // to the Protocol above the Passthru miniport	      //	      pPMstruct = &pPNPCapabilities->WakeUpCapabilities;	      pPMstruct->MinMagicPacketWakeUp = NdisDeviceStateUnspecified;	      pPMstruct->MinPatternWakeUp = NdisDeviceStateUnspecified;	      pPMstruct->MinLinkChangeWakeUp = NdisDeviceStateUnspecified;	    }	  l_QueryLength = sizeof (NDIS_PNP_CAPABILITIES);	}      while (FALSE);      break;    case OID_PNP_QUERY_POWER:      break;      // Required OIDs that we don't support    case OID_GEN_SUPPORTED_GUIDS:    case OID_GEN_MEDIA_CAPABILITIES:    case OID_TCP_TASK_OFFLOAD:    case OID_FFP_SUPPORT:      l_Status = NDIS_STATUS_INVALID_OID;      break;      // Optional stats OIDs    case OID_GEN_DIRECTED_BYTES_XMIT:    case OID_GEN_DIRECTED_FRAMES_XMIT:    case OID_GEN_MULTICAST_BYTES_XMIT:    case OID_GEN_MULTICAST_FRAMES_XMIT:    case OID_GEN_BROADCAST_BYTES_XMIT:    case OID_GEN_BROADCAST_FRAMES_XMIT:    case OID_GEN_DIRECTED_BYTES_RCV:    case OID_GEN_DIRECTED_FRAMES_RCV:    case OID_GEN_MULTICAST_BYTES_RCV:    case OID_GEN_MULTICAST_FRAMES_RCV:    case OID_GEN_BROADCAST_BYTES_RCV:    case OID_GEN_BROADCAST_FRAMES_RCV:      l_Status = NDIS_STATUS_INVALID_OID;      break;      //===================================================================      //                          Not Handled      //===================================================================    default:      DEBUGP (("[%s] Unhandled OID %lx\n", NAME (l_Adapter), p_OID));      l_Status = NDIS_STATUS_INVALID_OID;      break;    }  if (l_Status != NDIS_STATUS_SUCCESS)    ;  else if (l_QueryLength > p_BufferLength)    {      l_Status = NDIS_STATUS_INVALID_LENGTH;      *p_BytesNeeded = l_QueryLength;    }  else    NdisMoveMemory (p_Buffer, (PVOID) l_QueryPtr,		    (*p_BytesWritten = l_QueryLength));  return l_Status;}NDIS_STATUS AdapterModify(IN NDIS_HANDLE p_AdapterContext, IN NDIS_OID p_OID, IN PVOID p_Buffer, IN ULONG p_BufferLength, OUT PULONG p_BytesRead, OUT PULONG p_BytesNeeded){  TapAdapterQueryPointer l_Query = (TapAdapterQueryPointer) p_Buffer;  TapAdapterPointer l_Adapter = (TapAdapterPointer) p_AdapterContext;  NDIS_STATUS l_Status = NDIS_STATUS_INVALID_OID;  ULONG l_Long;  switch (p_OID)    {      //==================================================================      //                            Device Info      //==================================================================    case OID_802_3_MULTICAST_LIST:      DEBUGP (("[%s] Setting [OID_802_3_MULTICAST_LIST]\n",	       NAME (l_Adapter)));      *p_BytesNeeded = sizeof (ETH_ADDR);      *p_BytesRead = p_BufferLength;      if (p_BufferLength % sizeof (ETH_ADDR))	l_Status = NDIS_STATUS_INVALID_LENGTH;      else if (p_BufferLength > sizeof (MC_LIST))	{	  l_Status = NDIS_STATUS_MULTICAST_FULL;	  *p_BytesNeeded = sizeof (MC_LIST);	}      else	{	  NdisAcquireSpinLock (&l_Adapter->m_MCLock);	  NdisZeroMemory(&l_Adapter->m_MCList, sizeof (MC_LIST));        	  NdisMoveMemory(&l_Adapter->m_MCList,			 p_Buffer,			 p_BufferLength);	  l_Adapter->m_MCListSize = p_BufferLength / sizeof (ETH_ADDR);        	  NdisReleaseSpinLock (&l_Adapter->m_MCLock);	  l_Status = NDIS_STATUS_SUCCESS;	}      break;    case OID_GEN_CURRENT_PACKET_FILTER:      l_Status = NDIS_STATUS_INVALID_LENGTH;      *p_BytesNeeded = 4;      if (p_BufferLength >= sizeof (ULONG))	{	  DEBUGP	    (("[%s] Setting [OID_GEN_CURRENT_PACKET_FILTER] to [0x%02lx]\n",	      NAME (l_Adapter), l_Query->m_Long));	  l_Status = NDIS_STATUS_SUCCESS;	  *p_BytesRead = sizeof (ULONG);	}      break;    case OID_GEN_CURRENT_LOOKAHEAD:      if (p_BufferLength < sizeof (ULONG))	{	  l_Status = NDIS_STATUS_INVALID_LENGTH;	  *p_BytesNeeded = 4;	}      else if (l_Query->m_Long > DEFAULT_PACKET_LOOKAHEAD	       || l_Query->m_Long <= 0)	{	  l_Status = NDIS_STATUS_INVALID_DATA;	}      else	{	  DEBUGP (("[%s] Setting [OID_GEN_CURRENT_LOOKAHEAD] to [%d]\n",		   NAME (l_Adapter), l_Query->m_Long));	  l_Adapter->m_Lookahead = l_Query->m_Long;	  l_Status = NDIS_STATUS_SUCCESS;	  *p_BytesRead = sizeof (ULONG);	}      break;    case OID_GEN_NETWORK_LAYER_ADDRESSES:      l_Status = NDIS_STATUS_SUCCESS;      *p_BytesRead = *p_BytesNeeded = 0;      break;    case OID_GEN_TRANSPORT_HEADER_OFFSET:      l_Status = NDIS_STATUS_SUCCESS;      *p_BytesRead = *p_BytesNeeded = 0;      break;    case OID_PNP_SET_POWER:      do	{	  NDIS_DEVICE_POWER_STATE NewDeviceState;	  NewDeviceState = (*(PNDIS_DEVICE_POWER_STATE) p_Buffer);	  switch (NewDeviceState)	    {	    case NdisDeviceStateD0:	      l_Adapter->m_DeviceState = '0';	      break;	    case NdisDeviceStateD1:	      l_Adapter->m_DeviceState = '1';	      break;	    case NdisDeviceStateD2:	      l_Adapter->m_DeviceState = '2';	      break;	    case NdisDeviceStateD3:	      l_Adapter->m_DeviceState = '3';	      break;	    default:	      l_Adapter->m_DeviceState = '?';	      break;	    }	  l_Status = NDIS_STATUS_FAILURE;	  //	  // Check for invalid length	  //	  if (p_BufferLength < sizeof (NDIS_DEVICE_POWER_STATE))	    {	      l_Status = NDIS_STATUS_INVALID_LENGTH;	      break;	    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美白人最猛性xxxxx69交| 成人福利电影精品一区二区在线观看 | 精品国产电影一区二区| 蜜桃av一区二区在线观看 | 91久久香蕉国产日韩欧美9色| 中文字幕一区二区三区蜜月| 国产福利不卡视频| 亚洲美女少妇撒尿| 欧美一区二区在线播放| 韩国欧美国产1区| 国产欧美一区二区精品仙草咪 | 国产精品久久久一区麻豆最新章节| 国产成人av一区二区| 亚洲女同ⅹxx女同tv| 在线观看日韩精品| 狠狠色丁香九九婷婷综合五月| 欧美国产1区2区| 欧美色成人综合| 国产一级精品在线| 一区二区三区精品视频| 精品国产一二三| 色激情天天射综合网| 精品中文字幕一区二区| 亚洲欧洲av一区二区三区久久| 欧美日韩国产免费一区二区| 国产一区91精品张津瑜| 亚洲国产精品久久久久秋霞影院| 精品国产免费一区二区三区香蕉| 成人永久aaa| 午夜不卡av免费| 国产精品久久夜| 精品国产91九色蝌蚪| 色综合久久88色综合天天| 伦理电影国产精品| 一区二区成人在线视频| 精品第一国产综合精品aⅴ| 91麻豆高清视频| 久久99精品视频| 亚洲网友自拍偷拍| 国产精品你懂的在线欣赏| 67194成人在线观看| 成人福利视频在线| 韩国av一区二区三区四区 | 欧美剧情片在线观看| 国产成人在线观看| 日韩和欧美的一区| 亚洲另类春色国产| 中文字幕不卡一区| 久久婷婷综合激情| 777午夜精品免费视频| 一本一本久久a久久精品综合麻豆| 美女mm1313爽爽久久久蜜臀| 一区二区三区免费| 国产精品久久久久9999吃药| 欧美一级日韩不卡播放免费| 色88888久久久久久影院按摩| 国产精品一区免费在线观看| 蜜桃av噜噜一区二区三区小说| 亚洲精品高清在线| 17c精品麻豆一区二区免费| 久久精品男人天堂av| 欧美一区二区久久| 欧美色网站导航| 欧美亚日韩国产aⅴ精品中极品| 成人99免费视频| 国产不卡视频在线播放| 国产精品一区二区在线观看不卡| 秋霞av亚洲一区二区三| 亚洲制服丝袜av| 日韩高清电影一区| 亚洲国产日韩a在线播放性色| 中文字幕日本乱码精品影院| 国产精品美女久久久久久| 中文av一区二区| 国产精品色呦呦| 日本一区二区综合亚洲| 国产日韩在线不卡| 中文字幕国产一区| 国产精品理伦片| 亚洲青青青在线视频| 一区二区三区欧美视频| 亚洲小少妇裸体bbw| 亚洲高清免费视频| 日本aⅴ免费视频一区二区三区| 无码av免费一区二区三区试看 | 国产日韩欧美精品综合| 久久久久久久久岛国免费| 日本一区二区在线不卡| 国产精品不卡一区| 亚洲综合自拍偷拍| 日韩av高清在线观看| 韩国v欧美v亚洲v日本v| 丁香亚洲综合激情啪啪综合| 国产99久久久国产精品潘金| 972aa.com艺术欧美| 色天使久久综合网天天| 欧美老女人在线| 久久久亚洲欧洲日产国码αv| 国产欧美日韩另类一区| 亚洲精品中文字幕乱码三区 | 精品av久久707| 国产欧美精品日韩区二区麻豆天美| 国产欧美日韩视频一区二区| 中文字幕一区二区三区精华液 | 欧美成人伊人久久综合网| 久久婷婷色综合| 亚洲精品视频一区二区| 欧美aa在线视频| 成人自拍视频在线| 欧美日韩国产精品自在自线| 精品成人a区在线观看| 亚洲人成在线播放网站岛国| 午夜精品久久久久久| 国产一区二区网址| 91福利社在线观看| 久久日韩粉嫩一区二区三区| 亚洲天堂a在线| 老汉av免费一区二区三区| 欧美日韩一区二区不卡| 久久综合色天天久久综合图片| 菠萝蜜视频在线观看一区| 在线观看中文字幕不卡| 日韩视频在线永久播放| 亚洲欧洲精品一区二区三区| 国产乱码字幕精品高清av| 99re热这里只有精品视频| 波多野结衣视频一区| 欧美日韩小视频| 精品精品国产高清a毛片牛牛| 亚洲国产高清不卡| 一级特黄大欧美久久久| 91热门视频在线观看| 欧美国产日韩亚洲一区| 亚洲欧美日韩国产手机在线| 蜜桃91丨九色丨蝌蚪91桃色| 日韩一区二区三区在线| 欧美性猛片aaaaaaa做受| www日韩大片| 日日夜夜免费精品视频| 91丨porny丨最新| 久久久久久久久99精品| 爽好多水快深点欧美视频| 不卡的电影网站| 久久久av毛片精品| 日本欧美一区二区三区乱码| 在线观看免费亚洲| 亚洲欧美日韩一区| 成人激情图片网| 国产欧美精品一区二区三区四区 | 欧美肥大bbwbbw高潮| 亚洲国产三级在线| 91 com成人网| 欧美日韩精品一二三区| 国产精品自拍av| 亚洲卡通欧美制服中文| 国产999精品久久| 日韩激情视频在线观看| 国产成人av网站| 久久嫩草精品久久久久| 国产麻豆视频一区| 依依成人综合视频| 777a∨成人精品桃花网| 精品亚洲porn| 亚洲国产美女搞黄色| 91精品久久久久久久久99蜜臂| 奇米一区二区三区av| 欧美va在线播放| 亚洲午夜av在线| 91精品国产日韩91久久久久久| 久久国产麻豆精品| 国产精品你懂的在线| 日韩精品专区在线| 成人午夜电影久久影院| 欧美不卡激情三级在线观看| 久久av中文字幕片| 亚洲国产精品ⅴa在线观看| 成人理论电影网| 国产精品福利一区二区三区| 91麻豆精品视频| 免费在线观看精品| 欧美大片在线观看一区二区| 99久久精品免费看| 午夜不卡av在线| 亚洲欧美日韩国产综合在线| 日韩精品专区在线影院重磅| 色88888久久久久久影院野外| 国产美女精品人人做人人爽| 亚洲chinese男男1069| 一区二区三区久久| 日韩一区欧美一区| 国产日本欧洲亚洲| 欧美电视剧在线看免费| 天天爽夜夜爽夜夜爽精品视频| 成人性生交大合| 亚洲精品日韩综合观看成人91| 欧美日韩在线精品一区二区三区激情| 日韩在线观看一区二区| 久久精品视频免费| 欧美做爰猛烈大尺度电影无法无天| 三级不卡在线观看|