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

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

?? smsc111.c

?? WinCE5.0BSP for Renesas SH7770
?? C
?? 第 1 頁 / 共 5 頁
字號:
			ulGeneric = (ULONG)(NDIS_MAC_OPTION_TRANSFERS_NOT_PEND | NDIS_MAC_OPTION_RECEIVE_SERIALIZED | NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA | NDIS_MAC_OPTION_NO_LOOPBACK);
			break;
		case OID_GEN_SUPPORTED_LIST:
			pMoveSource = (PVOID)(Smsc111SupportedOids);
			ulMoveBytes = sizeof (Smsc111SupportedOids);
			break;
		case OID_GEN_HARDWARE_STATUS:
			HardwareStatus = NdisHardwareStatusReady;
			pMoveSource = (PVOID)(&HardwareStatus);
			ulMoveBytes = sizeof (NDIS_HARDWARE_STATUS);
			break;
		case OID_GEN_MEDIA_SUPPORTED:
		case OID_GEN_MEDIA_IN_USE:
			pMoveSource = (PVOID) (&Medium);
			ulMoveBytes = sizeof (NDIS_MEDIUM);
			break;
		case OID_GEN_MAXIMUM_LOOKAHEAD:
			ulGeneric = MAX_LOOKAHEAD;
			break;
		case OID_GEN_MAXIMUM_FRAME_SIZE:
			ulGeneric = (ULONG)(1514 - ETHER_HEADER_SIZE);
			break;
		case OID_GEN_MAXIMUM_TOTAL_SIZE:
			ulGeneric = (ULONG)(1514);
			break;
		case OID_GEN_LINK_SPEED:
			ulGeneric = (ULONG)(1000000L);
			break;
		case OID_GEN_TRANSMIT_BUFFER_SPACE:
			ulGeneric = (ULONG)2048;
			break;
		case OID_GEN_RECEIVE_BUFFER_SPACE:
			ulGeneric = (ULONG)2048;
			break;
		case OID_GEN_TRANSMIT_BLOCK_SIZE:
			ulGeneric = (ULONG)256;
			break;
		case OID_GEN_RECEIVE_BLOCK_SIZE:
			ulGeneric = (ULONG)256;
			break;
		case OID_GEN_VENDOR_ID:
			NdisMoveMemory ((PVOID)&ulGeneric, pAdapter->ucStationAddress, 3);
			ulGeneric &= 0xFFFFFF00;
			ulGeneric |= 0x01;
			pMoveSource = (PVOID)(&ulGeneric);
			ulMoveBytes = sizeof (ulGeneric);
			break;
		case OID_GEN_VENDOR_DESCRIPTION:
			pMoveSource = VendorString;
			ulMoveBytes = sizeof (VendorString);
			break;
		case OID_GEN_DRIVER_VERSION:
			usGeneric = ((USHORT)SMSC111_NDIS_MAJOR_VERSION << 8) | SMSC111_NDIS_MINOR_VERSION;
			pMoveSource = (PVOID)(&usGeneric);
			ulMoveBytes = sizeof (usGeneric);
			break;
		case OID_GEN_CURRENT_LOOKAHEAD:
			ulGeneric = (ULONG)(pAdapter->ulMaxLookAhead);
			break;
		case OID_802_3_PERMANENT_ADDRESS:
			NdisMoveMemory ((PCHAR)ucGenericArray, pAdapter->ucPermanentAddress, ETHER_LENGTH_OF_ADDRESS);
			pMoveSource = (PVOID)ucGenericArray;
			ulMoveBytes = sizeof (pAdapter->ucPermanentAddress);
			break;
		case OID_802_3_CURRENT_ADDRESS:
			NdisMoveMemory ((PCHAR)ucGenericArray, pAdapter->ucStationAddress, ETHER_LENGTH_OF_ADDRESS);
			pMoveSource = (PVOID)ucGenericArray;
			ulMoveBytes = sizeof (pAdapter->ucStationAddress);
			break;
		case OID_802_3_MAXIMUM_LIST_SIZE:
			ulGeneric = (ULONG) DEFAULT_MULTICASTLISTMAX;
			break;
		case OID_GEN_XMIT_OK:
			ulGeneric = (UINT)(pAdapter->ulFramesXmitGood);
			break;
		case OID_GEN_RCV_OK:
			ulGeneric = (UINT)(pAdapter->ulFramesRcvGood);
			break;
		case OID_GEN_XMIT_ERROR:
			ulGeneric = (UINT)(pAdapter->ulFramesXmitBad);
			break;
		case OID_GEN_RCV_ERROR:
			ulGeneric = (UINT)(pAdapter->ulCrcErrors);
			break;
		case OID_GEN_RCV_NO_BUFFER:
			ulGeneric = (UINT)(pAdapter->ulMissedPackets);
			break;
		case OID_802_3_RCV_ERROR_ALIGNMENT:
			ulGeneric = (UINT)(pAdapter->ulFrameAlignmentErrors);
			break;
		case OID_802_3_XMIT_ONE_COLLISION:
			ulGeneric = (UINT)(pAdapter->ulFramesXmitOneCollision);
			break;
		case OID_802_3_XMIT_MORE_COLLISIONS:
			ulGeneric = (UINT)(pAdapter->ulFramesXmitManyCollisions);
			break;

#ifdef UNDER_CE
     //
     // These are mandatory OIDs that must be provided by the 
     // driver even if they are not supported.
     //
    
     case OID_GEN_MEDIA_CONNECT_STATUS:
        ulGeneric = NdisMediaStateConnected;
        break;
        
     case OID_GEN_MAXIMUM_SEND_PACKETS:
        ulGeneric = 1;
        break;
        
     case OID_GEN_VENDOR_DRIVER_VERSION:
        ulGeneric = 1;
        break;
#endif
		default:
			StatusToReturn = NDIS_STATUS_INVALID_OID;
			break;
		}
    if (StatusToReturn == NDIS_STATUS_SUCCESS)
		{
        if (ulMoveBytes > ulInformationBufferLength)
			{
			//
			// Not enough room in InformationBuffer. Punt
			//
			*pulBytesNeeded = ulMoveBytes;
			StatusToReturn = NDIS_STATUS_INVALID_LENGTH;
			}
		else
			{
			//
			// Store the result.
			//
			NdisMoveMemory (pInformationBuffer, pMoveSource, ulMoveBytes);
			(*pulBytesWritten) += ulMoveBytes;
			}
	    }

    DEBUGMSG (ZONE_FUNCTION, (TEXT ("-CELAN: QueryInformation\r\n")));
    return (StatusToReturn);
	}

/*
 * Description:
 *	The Smsc111SetInformation handles a setting configurations values all OIDs.
 *
 * Arguments:
 *	hMiniportAdapterContext - A pointer to the adapter.
 *	Oid - The NDIS_OID to process.
 *	pInformationBuffer - A pointer to the data.
 *	ulInformationBufferLength - The length of the data.
 *	pulBytesRead - A pointer to the number of bytes read from the InformationBuffer.
 *	pulBytesNeeded - If there is not data in the information buffer then this will contain the number
 *				  of bytes needed to complete the request.
 *
 * Return Value:
 *	The status of the operation.
 *
 */
NDIS_STATUS
Smsc111SetInformation (IN NDIS_HANDLE hMiniportAdapterContext, IN NDIS_OID Oid, IN PVOID pInformationBuffer, IN ULONG ulInformationBufferLength, OUT PULONG pulBytesRead, OUT PULONG pulBytesNeeded)
	{
	//
	// Pointer to the adapter structure.
	//
	PSMSC111_ADAPTER pAdapter = (PSMSC111_ADAPTER)(hMiniportAdapterContext);

	//
	// General Algorithm:
	//
	//     Verify length
	//     Switch(Request)
	//        Process Request
	//
	ULONG ulBytesLeft = ulInformationBufferLength;
	PUCHAR pucInfoBuffer = (PUCHAR)(pInformationBuffer);
	//
	// Variables for holding the new values to be used.
	//
	ULONG ulLookAhead;
	ULONG ulPacketFilter;
	//
	// Status of the operation.
	//
	NDIS_STATUS StatusToReturn = NDIS_STATUS_SUCCESS;

	DEBUGMSG (ZONE_INIT | ZONE_FUNCTION, (TEXT ("+CELAN: SetInformation[0x%x]\r\n"), Oid));

	switch (Oid)
		{
		case OID_802_3_MULTICAST_LIST:
			//
			// Verify length
			//
			if ((ulInformationBufferLength % ETHER_LENGTH_OF_ADDRESS) != 0)
				{
				StatusToReturn = NDIS_STATUS_INVALID_LENGTH;
				*pulBytesRead = 0;
				*pulBytesNeeded = 0;
				break;
				}
			//
			// Set the new list on the adapter.
			//
			NdisMoveMemory(
				pAdapter->ucAddresses,
				pInformationBuffer,
				min(sizeof(pAdapter->ucAddresses), ulInformationBufferLength)
				);
			//
			//  If we are currently receiving all multicast or
			//  we are in promsicuous mode then we DO NOT call this, or
			//  it will reset the settings.
			//
			if (!(pAdapter->ulPacketFilter & (NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_PROMISCUOUS)))
				StatusToReturn = DispatchSetMulticastAddressList (pAdapter);
			else
				StatusToReturn = NDIS_STATUS_SUCCESS; // The list of multicast addresses is kept by the wrapper.
			break;
		case OID_GEN_CURRENT_PACKET_FILTER:
			//
			// Verify length
			//
			if (ulInformationBufferLength != 4)
				{
				StatusToReturn = NDIS_STATUS_INVALID_LENGTH;
				*pulBytesRead = 0;
				*pulBytesNeeded = 0;
				break;
				}
			NdisMoveMemory (&ulPacketFilter, pucInfoBuffer, 4);
			//
			// Verify bits
			//
			if (ulPacketFilter & (NDIS_PACKET_TYPE_SOURCE_ROUTING | NDIS_PACKET_TYPE_SMT | NDIS_PACKET_TYPE_MAC_FRAME | NDIS_PACKET_TYPE_FUNCTIONAL | NDIS_PACKET_TYPE_ALL_FUNCTIONAL | NDIS_PACKET_TYPE_GROUP))
				{
	            StatusToReturn = NDIS_STATUS_NOT_SUPPORTED;
				*pulBytesRead = 4;
				*pulBytesNeeded = 0;
				break;
				}
			//
			// Set the new value on the adapter.
			//
			pAdapter->ulPacketFilter = ulPacketFilter;
			StatusToReturn = DispatchSetPacketFilter (pAdapter);
			break;
		case OID_GEN_CURRENT_LOOKAHEAD:
			//
			// Verify length
			//
			if (ulInformationBufferLength != 4)
				{
				StatusToReturn = NDIS_STATUS_INVALID_LENGTH;
				*pulBytesRead = 0;
				*pulBytesNeeded = 0;
				break;
				}
			//
			// Store the new value.
			//
			NdisMoveMemory (&ulLookAhead, pucInfoBuffer, 4);
			if (ulLookAhead <= MAX_LOOKAHEAD)
				pAdapter->ulMaxLookAhead = ulLookAhead;
			else
				StatusToReturn = NDIS_STATUS_INVALID_LENGTH;
			break;
		default:
			StatusToReturn = NDIS_STATUS_INVALID_OID;
			*pulBytesRead = 0;
			*pulBytesNeeded = 0;
			break;
		}
	if (StatusToReturn == NDIS_STATUS_SUCCESS)
		{
        *pulBytesRead = ulBytesLeft;
        *pulBytesNeeded = 0;
	    }
//	RETAILMSG (1, (TEXT ("-CELAN: SetInformation\r\n")));
    return (StatusToReturn);
	}

/*
 * Description:
 *	Sets the appropriate bits in the adapter filters and modifies
 *	the card Receive Configuration Register if needed.
 *
 * Arguments:
 *	pAdapter - Pointer to the adapter structure.
 *
 * Return Value:
 *	The status of the operation.
 *
 *	Notes:
 *		To receive all multicast packets the multicast
 *		registers on the card must be filled with 1's. To be
 *		promiscuous that must be done as well as setting the
 *		promiscuous physical flag in the RCR. This must be done
 *		as long as ANY protocol bound to this adapter has their
 *		filter set accordingly.
 *
 */
NDIS_STATUS
DispatchSetPacketFilter (IN PSMSC111_ADAPTER pAdapter)
	{
//    RETAILMSG (1, (TEXT ("+CELAN: DispatchSetPacketFilter\r\n")));
    if (pAdapter->ulPacketFilter & (NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_PROMISCUOUS))
		NdisMSynchronizeWithInterrupt (&(pAdapter)->Interrupt, SyncCardSetAllMulticast, (PVOID)(pAdapter));  // Fills it with 1's
	else
		DispatchSetMulticastAddressList (pAdapter); // No longer need "all multicast".
    //
    // The multicast bit in the RCR should be on if ANY protocol wants
    // multicast/all multicast packets (or is promiscuous).
    //
    if (pAdapter->ulPacketFilter & (NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_MULTICAST | NDIS_PACKET_TYPE_PROMISCUOUS))
		pAdapter->usNicReceiveConfig |= RCR_ALMUL;
	else
		pAdapter->usNicReceiveConfig &= ~RCR_ALMUL;
	//
	// The promiscuous physical bit in the RCR should be on if ANY
	// protocol wants to be promiscuous.
	//
	if (pAdapter->ulPacketFilter & NDIS_PACKET_TYPE_PROMISCUOUS)
		pAdapter->usNicReceiveConfig |= RCR_PROMISC;
	else
		pAdapter->usNicReceiveConfig &= ~RCR_PROMISC;
	NdisMSynchronizeWithInterrupt (&(pAdapter)->Interrupt, SyncCardSetReceiveConfig, (PVOID)(pAdapter));
    DEBUGMSG (ZONE_FUNCTION, (TEXT ("-CELAN: DispatchSetPacketFilter\r\n")));
    return (NDIS_STATUS_SUCCESS);
	}

/*
 * Description:
 *	Sets the multicast list for this adapter.
 *
 * Arguments:
 *	pAdapter - Pointer to the adapter structure.
 *
 * Return Value:
 *	The status of the operation.
 *
 */
NDIS_STATUS
DispatchSetMulticastAddressList (IN PSMSC111_ADAPTER pAdapter)
	{
	//
	// Update the local copy of the SMSC111 multicast regs and copy them to the SMSC111
	//
	DEBUGMSG (ZONE_FUNCTION, (TEXT ("+CELAN: DispatchSetMulticastAddressList\r\n")));
	CardFillMulticastRegs (pAdapter);
    NdisMSynchronizeWithInterrupt (&(pAdapter)->Interrupt, SyncCardCopyMulticastRegs, (PVOID)(pAdapter));
	DEBUGMSG (ZONE_FUNCTION, (TEXT ("-CELAN: DispatchSetMulticastAddressList\r\n")));
	return (NDIS_STATUS_SUCCESS);
	}

/*
 * Description:
 *	This is the primary initialization routine for the SMSC111 driver.
 *	It is simply responsible for the intializing the wrapper and registering
 *	the Miniport driver. It then calls a system and architecture specific
 *  routine that will initialize and register each adapter.
 *
 * Arguments:
 *	DriverObject - Pointer to driver object created by the system.
 *	RegistryPath - Path to the parameters for this driver in the registry.
 *
 * Return Value:
 *	The status of the operation.
 *
 */
NTSTATUS
DriverEntry (IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
	{
	HKEY hKey;			// Handle for the registry key
    NDIS_MINIPORT_CHARACTERISTICS Characteristics;	// Characteristics table for this driver.
    NDIS_STATUS Status;	// Ndis function call result
	ULONG	datasize, kvaluetype;
	DWORD	MacValue;

    DEBUGMSG (ZONE_INIT | ZONE_FUNCTION, (TEXT ("+CELAN:DriverEntry for %s\r\n"), RegistryPath->Buffer));
//	NKDbgPrintfW (L"+CELAN: DriverEntry for %s\r\n", RegistryPath->Buffer);
    //
    // Initialize the wrapper.
    //
    NdisMInitializeWrapper (&gSmsc111MiniportBlock.NdisWrapperHandle, DriverObject, RegistryPath, NULL);

	if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, (LPCTSTR)RegistryPath->Buffer, 0, KEY_ALL_ACCESS, &hKey))
		{
		DEBUGMSG (ZONE_INIT | ZONE_ERROR, (TEXT ("!CELAN:DriverEntry: Failed to open HKEY_LOCAL_MACHINE key.\r\n")));
    	return (STATUS_UNSUCCESSFUL);
		}

	//
	// Get 91C111 register base address
	//
	datasize = sizeof(DWORD);
	if ( RegQueryValueEx(hKey, TEXT("RegBase"), NULL, &kvaluetype,
			(LPBYTE)&RegisterBase,&datasize) )
	{
		DEBUGMSG (ZONE_INIT | ZONE_ERROR,
					(TEXT("Faild to get RegBase value.\r\n")));
    	return STATUS_UNSUCCESSFUL;
	}

	//

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲免费在线一区| 国产成人综合在线观看| 久久久精品天堂| 欧美日韩五月天| 国产精品一级二级三级| 亚洲国产欧美另类丝袜| 国产欧美日韩在线观看| 91精品婷婷国产综合久久性色| 国产精品影视在线观看| 亚洲国产视频一区二区| 国产精品视频九色porn| 精品国产第一区二区三区观看体验| 91麻豆swag| 国产精品 日产精品 欧美精品| 午夜精品久久久久久久久久| 自拍偷在线精品自拍偷无码专区| 精品日韩在线观看| 9191久久久久久久久久久| 色婷婷综合久久久久中文| 国产精品亚洲专一区二区三区| 美女视频一区在线观看| 亚洲一区二区精品3399| 中文字幕一区二区在线播放| 久久久久久久久久久电影| 欧美va亚洲va在线观看蝴蝶网| 欧美日韩亚洲丝袜制服| 色天天综合色天天久久| av电影在线不卡| jiyouzz国产精品久久| 国产成人综合亚洲网站| 国产真实精品久久二三区| 日韩电影在线一区二区三区| 亚洲福利国产精品| 亚洲国产毛片aaaaa无费看| 亚洲精品国久久99热| 亚洲人123区| 亚洲最大成人综合| 一区二区三区资源| 一区二区视频在线看| 亚洲精品中文在线观看| 一区二区三区在线免费播放 | 欧美老女人在线| 欧美中文字幕一二三区视频| 欧美在线观看18| 在线观看91视频| 欧美精品乱码久久久久久| 欧美久久久久久久久中文字幕| 欧美日韩久久一区二区| 91精品国产综合久久久久久| 777a∨成人精品桃花网| 日韩欧美在线不卡| 精品国产一区二区三区av性色| 欧美精品一区二区三区很污很色的| 欧美一区二区三区在线电影| 日韩视频一区在线观看| 久久精品视频在线免费观看| 国产精品免费看片| 亚洲欧美日韩国产手机在线| 亚洲午夜免费视频| 毛片不卡一区二区| 国产99久久久国产精品免费看| av电影在线观看一区| 欧美性视频一区二区三区| 7777精品久久久大香线蕉| 欧美一区二区高清| 久久久高清一区二区三区| 亚洲色图19p| 青青草精品视频| 不卡的电视剧免费网站有什么| 欧美在线免费播放| 日韩欧美一区二区视频| 中文字幕免费在线观看视频一区| 专区另类欧美日韩| 日韩av二区在线播放| 国产不卡视频在线播放| 在线观看网站黄不卡| 亚洲精品一线二线三线| 亚洲人成小说网站色在线 | 久久国产人妖系列| 成人aaaa免费全部观看| 欧美日韩国产免费一区二区| 久久综合久久综合久久| 一区二区在线电影| 国产乱子轮精品视频| 色婷婷综合五月| 久久久久久一二三区| 亚洲一区二区三区精品在线| 韩国精品主播一区二区在线观看| 在线欧美日韩国产| 国产亚洲欧美中文| 亚洲图片欧美色图| 成人综合婷婷国产精品久久蜜臀| 欧美日韩中文字幕精品| 中文字幕乱码日本亚洲一区二区| 亚洲香蕉伊在人在线观| 高清在线不卡av| 欧美一区欧美二区| 亚洲精品亚洲人成人网在线播放| 久久精品国产亚洲a| 色婷婷久久99综合精品jk白丝| 精品国产电影一区二区| 婷婷综合久久一区二区三区| 成人av在线一区二区三区| 日韩一卡二卡三卡| 亚洲一区二区欧美日韩| 97se亚洲国产综合自在线不卡| 日韩天堂在线观看| 亚洲成a人片综合在线| 成人精品高清在线| 精品国产99国产精品| 亚洲二区视频在线| 日本韩国欧美在线| 国产精品嫩草99a| 国内不卡的二区三区中文字幕| 7777精品伊人久久久大香线蕉| 亚洲日本丝袜连裤袜办公室| 国产精品1024久久| 精品国产99国产精品| 奇米色一区二区| 欧美日韩激情一区二区| 一区二区在线观看视频在线观看| 99久免费精品视频在线观看| 国产亚洲午夜高清国产拍精品| 精品一二三四区| 欧美电影免费观看高清完整版| 免费人成精品欧美精品| 7777精品伊人久久久大香线蕉| 午夜天堂影视香蕉久久| 欧美三区在线视频| 五月天欧美精品| 欧美日韩国产首页| 日韩电影免费在线看| 91精品国产综合久久久蜜臀粉嫩| 日韩影视精彩在线| 777欧美精品| 久久精品国产在热久久| 亚洲精品在线网站| 国产91富婆露脸刺激对白| 国产日韩成人精品| 丰满少妇在线播放bd日韩电影| 国产欧美精品一区二区色综合朱莉| 国产精品66部| 国产蜜臀av在线一区二区三区| 成人黄色小视频在线观看| 国产精品高潮久久久久无| thepron国产精品| 亚洲精品视频在线观看免费| 欧洲激情一区二区| 七七婷婷婷婷精品国产| 精品免费国产二区三区| 国产精品白丝jk黑袜喷水| 国产精品区一区二区三| 色婷婷久久久综合中文字幕| 五月天国产精品| 欧美mv日韩mv| 99在线精品观看| 亚洲一区中文日韩| 日韩一区二区免费在线观看| 韩国一区二区在线观看| 中文字幕一区三区| 欧美高清视频不卡网| 久久国内精品自在自线400部| 久久久99精品免费观看不卡| 99精品国产热久久91蜜凸| 亚洲亚洲精品在线观看| 精品国产凹凸成av人网站| av不卡一区二区三区| 天天操天天干天天综合网| 久久综合狠狠综合久久综合88| 成人av在线播放网址| 亚洲成人动漫av| 国产亚洲精品久| 欧美这里有精品| 国产一区二区三区| 亚洲美腿欧美偷拍| 欧美一区二区成人6969| 不卡一区二区三区四区| 偷窥少妇高潮呻吟av久久免费| 久久精子c满五个校花| 91福利国产成人精品照片| 美国十次综合导航| 亚洲蜜臀av乱码久久精品蜜桃| 精品欧美乱码久久久久久1区2区 | 欧美一区二区视频在线观看2022| 国产一区二区剧情av在线| 亚洲激情自拍偷拍| 精品黑人一区二区三区久久| 99久久国产免费看| 久久国产麻豆精品| 亚洲影视在线观看| 日本一区二区三区国色天香 | 久久久精品免费网站| 欧美性猛交xxxx黑人交| 国产精品99久久久久久久vr | 精品亚洲porn| 一区二区成人在线观看| 亚洲国产精品成人综合| 日韩一区二区三| 在线精品视频免费观看| 成人在线视频一区二区|