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

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

?? smsc111.c

?? WinCE5.0BSP for Renesas SH7770
?? C
?? 第 1 頁 / 共 5 頁
字號:
	// Get MAC address
	//
	datasize = sizeof(DWORD);
	if ( RegQueryValueEx(hKey, TEXT("MAC0"), NULL, &kvaluetype,
			(LPBYTE)&MacValue,&datasize) )
	{
		DEBUGMSG (ZONE_INIT | ZONE_ERROR,
					(TEXT("Faild to get MAC0 value.\r\n")));
    	//return STATUS_UNSUCCESSFUL;
		MAC0 = 0;	// for ROM
 	}
	else
	MAC0 = (WORD)MacValue;

	datasize = sizeof(DWORD);
	if ( RegQueryValueEx(hKey, TEXT("MAC1"), NULL, &kvaluetype,
			(LPBYTE)&MacValue,&datasize) )
	{
		DEBUGMSG (ZONE_INIT | ZONE_ERROR,
					(TEXT("Faild to get MAC1 value.\r\n")));
    	//return STATUS_UNSUCCESSFUL;
		MAC1 = 0;	// for ROM
 	}
	else
	MAC1 = (WORD)MacValue;

	datasize = sizeof(DWORD);
	if ( RegQueryValueEx(hKey, TEXT("MAC2"), NULL, &kvaluetype,
			(LPBYTE)&MacValue,&datasize) )
	{
		DEBUGMSG (ZONE_INIT | ZONE_ERROR,
					(TEXT("Faild to get MAC2 value.\r\n")));
    	//return STATUS_UNSUCCESSFUL;
		MAC2 = 0;	// for ROM
 	}
	else
	MAC2 = (WORD)MacValue;

	//
	// Read any registry settings (currently nonthing to read)
	//
	RegCloseKey (hKey);
	DEBUGMSG (ZONE_INIT,(TEXT("LAN91C111 register base address : %x\r\n"),RegisterBase));

    //
    // Save the global information about this driver.
    //
    gSmsc111MiniportBlock.AdapterQueue = (PSMSC111_ADAPTER)NULL;

    //
    // Initialize the Miniport characteristics for the call to
    // NdisMRegisterMiniport.
    //
    memset (&Characteristics, 0, sizeof (Characteristics));
    Characteristics.MajorNdisVersion = SMSC111_NDIS_MAJOR_VERSION;
    Characteristics.MinorNdisVersion = SMSC111_NDIS_MINOR_VERSION;
    Characteristics.CheckForHangHandler = NULL;
    Characteristics.DisableInterruptHandler = Smsc111DisableInterrupt;
    Characteristics.EnableInterruptHandler = Smsc111EnableInterrupt;
    Characteristics.HaltHandler = Smsc111Halt;
    Characteristics.HandleInterruptHandler = Smsc111HandleInterrupt;
    Characteristics.InitializeHandler = Smsc111Initialize;
    Characteristics.ISRHandler = Smsc111Isr;
    Characteristics.QueryInformationHandler = Smsc111QueryInformation;
    Characteristics.ReconfigureHandler = NULL;
    Characteristics.ResetHandler = Smsc111Reset;
    Characteristics.SendHandler = Smsc111Send;
    Characteristics.SetInformationHandler = Smsc111SetInformation;
    Characteristics.TransferDataHandler = NULL;
    Characteristics.ReturnPacketHandler = NULL;
    Characteristics.SendPacketsHandler = NULL;
    Characteristics.AllocateCompleteHandler = NULL;

    Status = NdisMRegisterMiniport (gSmsc111MiniportBlock.NdisWrapperHandle, &Characteristics, sizeof (Characteristics));

	if (Status == NDIS_STATUS_SUCCESS)
		{
		DEBUGMSG (ZONE_INIT | ZONE_FUNCTION, (TEXT (" CELAN:DriverEntry: Success\r\n")));
		Status = STATUS_SUCCESS;
		}
	else
		{
		// Terminate the wrapper.
		NdisTerminateWrapper (gSmsc111MiniportBlock.NdisWrapperHandle, NULL);
		gSmsc111MiniportBlock.NdisWrapperHandle = NULL;
		Status = STATUS_UNSUCCESSFUL;
		DEBUGMSG (ZONE_INIT | ZONE_FUNCTION, (TEXT ("!CELAN:DriverEntry: Unsuccessful\r\n")));
		}
	DEBUGMSG (ZONE_INIT | ZONE_FUNCTION, (TEXT ("-CELAN:DriverEntry\r\n")));
//	NKDbgPrintfW (L"-CELAN: DriverEntry\r\n");
    return (Status);
	}

/*
 * Description:
 *	The Smsc111Reset request instructs the Miniport to issue a hardware reset
 *	to the network adapter.  The driver also resets its software state.  See
 *	the description of NdisMReset for a detailed description of this request.
 *
 * Arguments:
 *	pbAddressingReset - Does the adapter need the addressing information reloaded.
 *	hMiniportAdapterContext - Pointer to the adapter structure.
 *
 * Return Value:
 *	The status of the operation.
 */
NDIS_STATUS
Smsc111Reset (OUT PBOOLEAN pbAddressingReset, IN NDIS_HANDLE hMiniportAdapterContext)
	{
	BOOLEAN bResult;
    //
    // Pointer to the adapter structure.
    //
    PSMSC111_ADAPTER pAdapter = (PSMSC111_ADAPTER)(hMiniportAdapterContext);

    DEBUGMSG (ZONE_FUNCTION, (TEXT ("+CELAN: Reset\r\n")));
    //
    // Physically reset the card.
    //
    pAdapter->usNicInterruptMask = IM_TX_INT | IM_RCV_INT | IM_RX_OVRN_INT | IM_EPH_INT;

    DEBUGMSG (ZONE_FUNCTION, (TEXT ("-CELAN: Reset\r\n")));
	bResult = CardReset (pAdapter);
	if (bResult)
		return (NDIS_STATUS_SUCCESS);
	return (NDIS_STATUS_FAILURE);
	}

/*
 * Description:
 *	This routine is used to turn on the interrupt mask.
 *
 * Arguments:
 *	Context - The adapter for the SMSC111 to enable.
 *
 * Return Value:
 *	None.
 */
VOID
Smsc111EnableInterrupt (IN NDIS_HANDLE hMiniportAdapterContext)
	{
    PSMSC111_ADAPTER pAdapter = (PSMSC111_ADAPTER)(hMiniportAdapterContext);
	DEBUGMSG (ZONE_INTR, (TEXT ("+CELAN: EnableInterrupt\r\n")));
    CardUnblockInterrupts (pAdapter);
	DEBUGMSG(ZONE_INTR, (TEXT ("-CELAN: EnableInterrupt\r\n")));
	}

/*
 * Description:
 *	This routine is used to turn off the interrupt mask.
 *
 * Arguments:
 *	Context - The adapter for the SMSC111 to disable.
 *
 * Return Value:
 *	None.
 */
VOID
Smsc111DisableInterrupt (IN NDIS_HANDLE hMiniportAdapterContext)
	{
	PSMSC111_ADAPTER pAdapter = (PSMSC111_ADAPTER)(hMiniportAdapterContext);
	DEBUGMSG (ZONE_INTR, (TEXT ("+CELAN:DisableInterrupt\r\n")));
	CardBlockInterrupts (pAdapter);
	DEBUGMSG(ZONE_INTR, (TEXT ("-CELAN:DisableInterrupt\r\n")));
	}

/*
 * Description:
 *	Smsc111Halt removes an adapter that was previously initialized.
 *
 * Arguments:
 *	hMiniportAdapterContext - The context value that the Miniport returned from Smsc111Initialize.
 *
 * Return Value:
 *	None.
 */
VOID
Smsc111Halt (IN NDIS_HANDLE hMiniportAdapterContext)
	{
    PSMSC111_ADAPTER pAdapter = (PSMSC111_ADAPTER)(hMiniportAdapterContext);
    DEBUGMSG (ZONE_FUNCTION, (TEXT ("+CELAN: Halt\r\n")));
    //
    // Shut down the chip.
    //
    CardStop (pAdapter);
    //
    // Disconnect the interrupt line.
    //
    NdisMDeregisterInterrupt (&pAdapter->Interrupt);
    //
    // Pause, waiting for any DPC stuff to clear.
    //
    NdisMSleep (250000);
    //
    // Remove the adapter from the global queue of adapters.
    //
    if (gSmsc111MiniportBlock.AdapterQueue == pAdapter)
        gSmsc111MiniportBlock.AdapterQueue = pAdapter->NextAdapter;
	else
		{
        PSMSC111_ADAPTER TmpAdapter = gSmsc111MiniportBlock.AdapterQueue;
        while (TmpAdapter->NextAdapter != pAdapter)
            TmpAdapter = TmpAdapter->NextAdapter;
        TmpAdapter->NextAdapter = TmpAdapter->NextAdapter->NextAdapter;
	    }
	//
	// Was this the last NIC?
	//
	if ((gSmsc111MiniportBlock.AdapterQueue == NULL) && gSmsc111MiniportBlock.NdisWrapperHandle)
		{
		NdisTerminateWrapper (gSmsc111MiniportBlock.NdisWrapperHandle, NULL);
		gSmsc111MiniportBlock.NdisWrapperHandle = NULL;
		}
	//
	// If the initial VirtualAlloc was successful, then free the allocated memory.
	//
	if (pAdapter->pVirtualRegisterBase)
		VirtualFree ((PVOID)(pAdapter->pVirtualRegisterBase), 0, MEM_RELEASE);
    //
    // Free up the memory
    //
    NdisFreeMemory (pAdapter, sizeof (PSMSC111_ADAPTER), 0);
    DEBUGMSG (ZONE_FUNCTION, (TEXT ("-CELAN: Halt\r\n")));
    return;
	}

/*
 * Description:
 *	Smsc111Initialize starts an adapter and registers resources with the wrapper.
 *
 * Arguments:
 *	OpenErrorStatus - Extra status bytes for opening token ring adapters.
 *  puiSelectedMediumIndex - Pointer to index of the media type chosen by the driver.
 *	MediumArray - Array of media types for the driver to chose from.
 *	uiMediumArraySize - Number of entries in the array.
 *	hMiniportAdapterHandle - Handle for passing to the wrapper when referring to this adapter.
 *	hConfigurationHandle - A handle to pass to NdisOpenConfiguration.
 *
 * Return Value:
 *	NDIS_STATUS_SUCCESS
 *	NDIS_STATUS_PENDING
 *	NDIS_STATUS_UNSUPPORTED_MEDIA
 */
#pragma NDIS_PAGEABLE_FUNCTION (Smsc111Initialize)
NDIS_STATUS
Smsc111Initialize (OUT PNDIS_STATUS OpenErrorStatus, OUT PUINT puiSelectedMediumIndex, IN PNDIS_MEDIUM MediumArray, IN UINT uiMediumArraySize, IN NDIS_HANDLE hMiniportAdapterHandle, IN NDIS_HANDLE hConfigurationHandle)
	{
    PSMSC111_ADAPTER pAdapter;	// Pointer to our newly allocated adapter.
    NDIS_HANDLE hConfigHandle;		// The handle for reading from the registry.
    BOOLEAN bConfigError = FALSE;	// TRUE if there is a configuration error.
    ULONG ulConfigErrorValue = 0;	// A special value to log concerning the error.
    //UCHAR ucInterruptNumber;		// The interrupt number to use.
    UINT uiIndex;					// Temporary looping variable.
    NDIS_STATUS Status;				// Status of Ndis calls.
	NDIS_PHYSICAL_ADDRESS HighestAcceptableMax = NDIS_PHYSICAL_ADDRESS_CONST(-1,-1);

    PNDIS_CONFIGURATION_PARAMETER ReturnedValue;
    NDIS_STRING IOAddressStr = IOADDRESS;
    NDIS_STRING InterruptStr = INTERRUPT;
    NDIS_STRING IOMultiplier = IOMULTIPLIER;


    DEBUGMSG (ZONE_FUNCTION, (TEXT ("+CELAN: Initialize\r\n")));
//	NKDbgPrintfW (L"+CELAN: Initialize\r\n");
    //
    // Search for the medium type (802.3) in the given array.
    //
    for (uiIndex = 0; uiIndex < uiMediumArraySize; uiIndex++)
		{
        if (MediumArray[uiIndex] == NdisMedium802_3)
            break;
	    }

    if (uiIndex == uiMediumArraySize)
		{
        DEBUGMSG (ZONE_INIT | ZONE_ERROR, (TEXT ("!CELAN: Initialize: No supported media\r\n")));
        return (NDIS_STATUS_UNSUPPORTED_MEDIA);
		}
    *puiSelectedMediumIndex = uiIndex;
	DEBUGMSG (ZONE_INIT, (TEXT (" CELAN: Selected media is %d.\r\n"), *puiSelectedMediumIndex));

    //
    // Set default values.
    //
    //ucInterruptNumber = SMSC111Irq;

    //
    // Allocate memory for the adapter block now.
    //
    Status = NdisAllocateMemory ((PVOID *)&pAdapter, sizeof (SMSC111_ADAPTER), 0, HighestAcceptableMax);
    if (Status != NDIS_STATUS_SUCCESS)
		{
        DEBUGMSG (ZONE_INIT | ZONE_ERROR, (TEXT ("!CELAN: Initialize: NdisAllocateMemory (SMSC111_ADAPTER) failed.\r\n")));
        return (Status);
	    }
	DEBUGMSG (ZONE_INIT | ZONE_ERROR, (TEXT (" CELAN: Initialize: pAdapter allocated at 0x%x.\r\n"), pAdapter));
//	NKDbgPrintfW (L" CELAN: Initialize: pAdapter allocated at 0x%x.\r\n", pAdapter);
    //
    // Clear out the adapter block, which sets all default values to FALSE, or NULL.
    //
    NdisZeroMemory (pAdapter, sizeof (SMSC111_ADAPTER));
    //
    // Open the configuration space.
    //
    NdisOpenConfiguration (&Status, &hConfigHandle, hConfigurationHandle);
    if (Status != NDIS_STATUS_SUCCESS)		{
        NdisFreeMemory (pAdapter, sizeof (SMSC111_ADAPTER), 0);
        DEBUGMSG (ZONE_INIT, (TEXT ("!CELAN: Initialize: NdisOpenConfiguration failed 0x%x\r\n"), Status));
        return (Status);
	}


	NdisReadConfiguration(
		&Status,
		&ReturnedValue,
		hConfigHandle,
		&IOMultiplier,
		NdisParameterHexInteger
		);
	
	if (Status == NDIS_STATUS_SUCCESS) {
		
		pAdapter->uMultiplier= (ReturnedValue->ParameterData.IntegerData);
		
	}
	else
		pAdapter->uMultiplier=1;// Default
	//
	// Read I/O Address
	//
	NdisReadConfiguration(
		&Status,
		&ReturnedValue,
		hConfigHandle,
		&IOAddressStr,
		NdisParameterHexInteger
		);
	
	if (Status == NDIS_STATUS_SUCCESS) {
		
		pAdapter->ulIoBaseAddress= (ReturnedValue->ParameterData.IntegerData);
		
		
		NdisReadConfiguration(
			&Status,
			&ReturnedValue,
			hConfigHandle,
			&InterruptStr,
			NdisParameterInteger
			);
		if (Status == NDIS_STATUS_SUCCESS) {
			
			pAdapter->ucInterruptNumber= (CCHAR)(ReturnedValue->ParameterData.IntegerData);
			
		}
	
	}
	
    DEBUGMSG (ZONE_INIT, (TEXT (" CELAN: IO address 0x%lx, Interrupt number 0x%lx, io multiplier=0x%lx\r\n"), 
		pAdapter->ulIoBaseAddress,pAdapter->ucInterruptNumber,pAdapter->uMultiplier));
    //
    // First close the configuration space.
    //
    NdisCloseConfiguration (hConfigHandle);

	if (Status !=NDIS_STATUS_SUCCESS) {
        NdisFreeMemory (pAdapter, sizeof (SMSC111_ADAPTER), 0);
        DEBUGMSG (ZONE_INIT, (TEXT ("!CELAN: Initialize: NdisReadCOnfiguration failed 0x%x\r\n"), Status));
		return Status;
	}

    //
    // Set up the parameters.
    //
//	pAdapter->ucInterruptNumber = ucInterruptNumber;
	pAdapter->hMiniportAdapterHandle = hMiniportAdapterHandle;
	pAdapter->ulMaxLookAhead = MAX_LOOKAHEAD;

    //
    // Now do the work.
    //
    if (Smsc111RegisterAdapter (pAdapter, hConfigurationHandle, bConfigError, ulConfigErrorValue) != NDIS_STATUS_SUCCESS)	{
        //
        // Smsc111RegisterAdapter failed.
        //
        NdisFreeMemory (pAdapter, sizeof (SMSC111_ADAPTER), 0);
        DEBUGMSG (ZONE_INIT, (TEXT ("!CELAN: NdisRegisterAdapter failed.\r\n")));
        return (NDIS_STATUS_FAILURE);
	}

    DEBUGMSG (ZONE_INIT, (TEXT (" CELAN: Initialize succeeded\r\n")));
    DEBUGMSG (ZONE_FUNCTION, (TEXT ("-CELAN: Initialize\r\n")));

	// Dump all the registers before coming out.
	printregs(pAdapter);	
	printregs(pAdapter);	
//	NKDbgPrintfW (L"-CELAN: Initialize\r\n");
    return (NDIS_STATUS_SUCCESS);
}

/*
 * Description:
 *	Called when a new adapter should be registered. It allocates space for
 *	the adapter, initializes the adapter's block, registers resources
 *	with the wrapper and initializes the physical adapter.
 *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久国产字幕高潮| 婷婷成人综合网| 国产91精品免费| 国产无人区一区二区三区| 国产精品白丝jk黑袜喷水| 欧美激情一区三区| 色综合久久久久综合体桃花网| 亚洲色图视频免费播放| 精品视频免费在线| 老司机免费视频一区二区| 久久久久久久久久久久久久久99| 成人免费视频网站在线观看| 亚洲乱码中文字幕| 日韩午夜av一区| 成人激情动漫在线观看| 亚洲精品乱码久久久久久久久| 3d动漫精品啪啪1区2区免费 | 奇米精品一区二区三区在线观看一| 欧美猛男男办公室激情| 激情六月婷婷综合| 亚洲视频一二三| 欧美一区二区福利在线| 风间由美中文字幕在线看视频国产欧美| 亚洲精品免费在线| 欧美成人在线直播| 91视频国产资源| 蜜桃一区二区三区在线观看| 国产精品色在线观看| 欧美精品久久一区| 成人福利电影精品一区二区在线观看| 一区二区三区加勒比av| 久久久久国产精品麻豆ai换脸 | 91精品国产综合久久久蜜臀粉嫩| 国产美女主播视频一区| 一区二区三区中文字幕精品精品| 日韩欧美国产三级| 欧洲另类一二三四区| 成人一区二区在线观看| 日日夜夜免费精品| 中文字幕日韩精品一区| 欧美电影免费观看完整版| 91国产视频在线观看| 国产成人激情av| 日本一不卡视频| 一区二区三区精密机械公司| 国产视频一区在线观看 | 久久色成人在线| 欧美私模裸体表演在线观看| 国产成人综合在线播放| 日韩精品国产精品| 中文字幕一区二| 亚洲精品一线二线三线| 欧美日韩你懂得| 色综合视频在线观看| 成人精品gif动图一区| 狠狠色丁香婷婷综合| 免费日韩伦理电影| 亚洲午夜激情网页| 亚洲欧美日韩在线| 国产精品久久99| 日本一区二区三级电影在线观看 | 亚洲精品久久久久久国产精华液| 久久亚洲精华国产精华液| 欧美一区国产二区| 欧美日韩在线电影| 欧美色涩在线第一页| 色综合色综合色综合 | 国产成人精品一区二区三区四区| 男女性色大片免费观看一区二区 | 麻豆精品视频在线观看免费| 午夜欧美2019年伦理| 亚洲高清免费在线| 一区二区三区高清在线| 一区二区三区波多野结衣在线观看| 亚洲欧美在线视频| 国产精品卡一卡二| 中文字幕综合网| 亚洲男同性视频| 亚洲综合丁香婷婷六月香| 亚洲免费看黄网站| 亚洲永久免费av| 午夜精品久久久久影视| 日本成人在线一区| 久久精品99国产精品| 国产一区二区三区电影在线观看 | 欧美一区2区视频在线观看| 69av一区二区三区| 欧美成人性福生活免费看| 日韩三区在线观看| 久久先锋影音av| 中文在线一区二区 | 欧美在线free| 欧美顶级少妇做爰| 欧美精品一区二区三区蜜臀| 国产午夜精品久久久久久免费视 | 亚洲电影你懂得| 日本成人在线看| 成人一级黄色片| 99国产欧美另类久久久精品 | 99久久国产综合精品麻豆 | 欧美日韩国产综合一区二区| 69堂精品视频| 欧美经典三级视频一区二区三区| 亚洲欧美日韩国产手机在线 | 欧美日韩高清在线播放| 日韩免费电影一区| 国产精品视频九色porn| 亚洲一区二区三区中文字幕 | 欧美精品精品一区| 久久久久久97三级| 一卡二卡欧美日韩| 激情欧美一区二区三区在线观看| 91伊人久久大香线蕉| 56国语精品自产拍在线观看| 久久久亚洲高清| 亚洲一区二三区| 国产激情一区二区三区四区| 欧美午夜精品一区二区三区| 精品欧美黑人一区二区三区| 综合网在线视频| 美女www一区二区| 色综合天天综合网国产成人综合天| 69堂成人精品免费视频| 亚洲欧美怡红院| 精品在线播放免费| 91成人网在线| 国产亚洲欧美色| 日韩电影在线一区| 91香蕉视频mp4| 欧美精品一区二区三区在线| 亚洲一区影音先锋| 成人精品视频.| 精品久久久久久久久久久院品网 | 国产农村妇女毛片精品久久麻豆| 亚洲成人动漫av| 91麻豆国产福利在线观看| 久久久欧美精品sm网站| 日韩黄色小视频| 在线观看视频一区二区欧美日韩| 国产色综合一区| 九九**精品视频免费播放| 欧美亚洲丝袜传媒另类| 亚洲欧美综合另类在线卡通| 国产福利91精品| 日韩三级在线观看| 强制捆绑调教一区二区| 精品视频在线免费观看| 亚洲欧美另类图片小说| 成人免费av在线| 久久久久久免费网| 狠狠色丁香久久婷婷综| 精品日产卡一卡二卡麻豆| 免费观看30秒视频久久| 91精品国产高清一区二区三区蜜臀| 亚洲精品国产一区二区精华液 | 国产亚洲欧美日韩俺去了| 久久精品国产第一区二区三区| 欧美精品乱人伦久久久久久| 亚洲一区二区在线免费看| 在线视频国产一区| 玉足女爽爽91| 在线亚洲+欧美+日本专区| 亚洲综合久久久久| 欧美性xxxxxxxx| 五月婷婷久久综合| 欧美疯狂做受xxxx富婆| 日韩黄色免费网站| 欧美一区二区三区婷婷月色| 日韩精品国产欧美| 欧美xxxxx牲另类人与| 精品一区二区三区免费视频| 欧美成人精精品一区二区频| 麻豆91在线播放| 精品成人佐山爱一区二区| 国产一区二区三区香蕉| 久久久精品天堂| 成人91在线观看| 樱花影视一区二区| 欧美精品色综合| 精品夜夜嗨av一区二区三区| 久久综合久久综合九色| 成人免费观看视频| 亚洲一区二区视频| 日韩欧美在线网站| 国产成人精品综合在线观看| 国产精品女主播在线观看| 色中色一区二区| 日本欧美在线观看| 国产夜色精品一区二区av| 91在线精品一区二区| 婷婷丁香激情综合| 精品国产sm最大网站免费看| 国产91精品一区二区| 亚洲无线码一区二区三区| 欧美一级二级三级蜜桃| 国产伦精品一区二区三区免费 | 亚洲综合一区二区| 日韩欧美中文一区二区| 成人国产精品免费观看| 午夜精品福利一区二区蜜股av|