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

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

?? miniport.c

?? 優龍2410平臺BSP包
?? C
?? 第 1 頁 / 共 3 頁
字號:
			&IOAddressStr,
			NdisParameterHexInteger
			);

		if (Status == NDIS_STATUS_SUCCESS) {
	    	IoBaseAddr = (PVOID)(ReturnedValue->ParameterData.IntegerData);
		}

		//
		// Read	interrupt number
		//
		NdisReadConfiguration(
			&Status,
			&ReturnedValue,
			ConfigHandle,
			&InterruptStr,
			NdisParameterInteger
			);

		if (Status == NDIS_STATUS_SUCCESS) {
	    	InterruptNumber = (CCHAR)(ReturnedValue->ParameterData.IntegerData);
		}
    }

    //
    // Read MaxMulticastList
	//
    NdisReadConfiguration(
		&Status,
	    &ReturnedValue,
	    ConfigHandle,
	    &MaxMulticastListStr,
	    NdisParameterInteger
	    );

    if (Status == NDIS_STATUS_SUCCESS) {
		MaxMulticastList = ReturnedValue->ParameterData.IntegerData;
		if (ReturnedValue->ParameterData.IntegerData <=	DEFAULT_MULTICASTLISTMAX)
			MaxMulticastList = ReturnedValue->ParameterData.IntegerData;
    }


	// RegisterAdapter:

    //
    // Now to use this information and register	with the wrapper
    // and initialize the adapter.
    //

    //
    // First close the configuration space.
    //
    NdisCloseConfiguration(ConfigHandle);

    DEBUGMSG(1, (TEXT("CS8900:Card type: 0x%x\r\n"), Adapter->CardType));
    DEBUGMSG(1, (TEXT("CS8900:I/O base	addr 0x%lx\r\n"), IoBaseAddr));
    DEBUGMSG(1, (TEXT("CS8900:interrupt number	%ld\r\n"),
	InterruptNumber));
    DEBUGMSG(1, (TEXT("CS8900:max multicast %ld\r\n"),
	DEFAULT_MULTICASTLISTMAX));
    DEBUGMSG(1, (TEXT("CS8900:attribute memory	address	0x%X\r\n"),
	Adapter->AttributeMemoryAddress));
    DEBUGMSG(1, (TEXT("CS8900:attribute memory	size 0x%X\r\n"),
	Adapter->AttributeMemorySize));
    DEBUGMSG(1, (TEXT("CS8900:Bus type: %d\r\n"), Adapter->BusType));

    //
    // Set up the parameters.
    //
    Adapter->IoBaseAddr	= IoBaseAddr;

	Adapter->InterruptNumber = InterruptNumber;

    Adapter->MulticastListMax =	MaxMulticastList;
    Adapter->MiniportAdapterHandle = MiniportAdapterHandle;

    Adapter->MaxLookAhead = CS8900_MAX_LOOKAHEAD;

    //
    // Now do the work.
    //
    if (CS8900RegisterAdapter(Adapter,
		ConfigurationHandle,
		ConfigError,
		ConfigErrorValue
		) != NDIS_STATUS_SUCCESS) {

		//
		// CS8900RegisterAdapter failed.
		//
		NdisFreeMemory(Adapter,	sizeof(CS8900_ADAPTER),	0);

		return NDIS_STATUS_FAILURE;

	}

    DEBUGMSG(1, (TEXT("-CS8900:CS8900Initialize Success!\r\n")));
    return NDIS_STATUS_SUCCESS;
}


#pragma	NDIS_PAGEABLE_FUNCTION(CS8900RegisterAdapter)
NDIS_STATUS
CS8900RegisterAdapter(
    IN PCS8900_ADAPTER Adapter,
    IN NDIS_HANDLE ConfigurationHandle,
    IN BOOLEAN ConfigError,
    IN ULONG ConfigErrorValue
    )

/*++

Routine	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.

Arguments:

    Adapter - The adapter structure.

    ConfigurationHandle	- Handle passed	to CS8900Initialize.

    ConfigError	- Was there an error during configuration reading.

    ConfigErrorValue - Value to	log if there is	an error.

Return Value:

    Indicates the success or failure of	the registration.

--*/

{
    //
    // Temporary looping variable.
    //
    unsigned char *m_pCS8900IoPort;

    //
    // General purpose return from NDIS	calls
    //
    NDIS_STATUS	status;

	DEBUGMSG(1, (TEXT("+CS8900:CS8900RegisterAdapter\r\n")));

    //
    // Check for a configuration error
    //
    if (ConfigError)
    {
		//
		// Log Error and exit.
		//
		NdisWriteErrorLogEntry(
			Adapter->MiniportAdapterHandle,
			NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION,
			1,
			ConfigErrorValue
			);
		DEBUGMSG(1,
			(TEXT("CS8900:RegisterAdapter: CS8900Initialize had	a config error %d\r\n"),
			ConfigErrorValue));

		return(NDIS_STATUS_FAILURE);
	}

    //
    // Inform the wrapper of the physical attributes of	this adapter.
    //
	DEBUGMSG(1, (TEXT("CS8900: -> NdisMSetAttributes\r\n")));
		
    NdisMSetAttributes(
		Adapter->MiniportAdapterHandle,
		(NDIS_HANDLE)Adapter,
		FALSE,
		Adapter->BusType
		);

	m_pCS8900IoPort	= VirtualAlloc(0, 0x1000, MEM_RESERVE, PAGE_NOACCESS);
	DEBUGMSG(1,
		(TEXT("[CS8900] VirtualAlloc of m_pCS8900IoPort returns %x\r\n"), m_pCS8900IoPort));

	if (!VirtualCopy(m_pCS8900IoPort, (LPVOID)((IO_PACKET_PAGE_BASE_ADDR) & 0xFFFFF000),
						0x1000,	PAGE_READWRITE|PAGE_NOCACHE) )
		DEBUGMSG(1, (TEXT("[CS8900] m_pCS8900IoPort Virtual Copy failed\r\n")));
	else
		DEBUGMSG(1, (TEXT("[CS8900] m_pCS8900IoPort Virtual Copy OK!\r\n")));


	ioPacketPage = (volatile unsigned char *)(m_pCS8900IoPort + 
		(IO_PACKET_PAGE_BASE_ADDR - ((IO_PACKET_PAGE_BASE_ADDR) & 0xFFFFF000)) );
	Adapter->IoPAddr = (unsigned long)ioPacketPage;

	DEBUGMSG(1, (TEXT("[CS8900] m_pCS8900IoPort= %x\r\n"), Adapter->IoPAddr));


/*    
    //
    // Register	the port addresses.
    //

	DEBUGMSG(1,
		(TEXT("CS8900: -> NdisMRegisterIoPortRange\r\n")));
    status = NdisMRegisterIoPortRange(
		 (PVOID	*)(&(Adapter->IoPAddr)),
		 Adapter->MiniportAdapterHandle,
		 (ULONG)Adapter->IoBaseAddr,
		 0x20
	     );

    if (status != NDIS_STATUS_SUCCESS)
    {
	DEBUGMSG(1,
			(TEXT("CS8900:NdisMRegisterIoPortRange unsuccessful!\r\n")));
	return(status);
	}     
*/
    if (Adapter->IoPAddr == 0)
    {
		DEBUGMSG(1, (TEXT("CS8900:Invalid IoPAddr!\r\n")));
		return NDIS_STATUS_FAILURE;
    }

    //
    // Initialize the card.
    //
    DEBUGMSG(1, (TEXT("+CS8900:CS8900Initialize\r\n")));

    if (!CS8900Initialize(Adapter))
    {
		DEBUGMSG(1, (TEXT("-CS8900:CS8900Initialize - Fail!\r\n")));

		NdisWriteErrorLogEntry(
	    	Adapter->MiniportAdapterHandle,
	    	NDIS_ERROR_CODE_ADAPTER_NOT_FOUND,
	    	0
			);

		status = NDIS_STATUS_ADAPTER_NOT_FOUND;

		goto fail2;
    }

    DEBUGMSG(1, (TEXT("-CS8900:CS8900Initialize	- Success!\r\n")));

    //
    // Read the	Ethernet address off of	the PROM.
    //
    if (!CS8900ReadEthernetAddress(Adapter))
    {
		DEBUGMSG(1, (TEXT("CS8900:RegisterAdapter Could	not read the ethernet address\n")));

		NdisWriteErrorLogEntry(
			Adapter->MiniportAdapterHandle,
	    	NDIS_ERROR_CODE_ADAPTER_NOT_FOUND,
			0
	    	);

		status = NDIS_STATUS_ADAPTER_NOT_FOUND;

		goto fail2;
    }

    //
    // Initialize the interrupt.
    //
    status = NdisMRegisterInterrupt(
		 &Adapter->Interrupt,
		 Adapter->MiniportAdapterHandle,
		 Adapter->InterruptNumber,
		 Adapter->InterruptNumber,
		 TRUE,
		 FALSE,
		 NdisInterruptLatched
	     );

    if (status != NDIS_STATUS_SUCCESS)
    {
		DEBUGMSG(1, (TEXT("CS8900:RegisterAdapter -> NdisMRegisterInterrupt failed 0x%x\r\n"), status));
		NdisWriteErrorLogEntry(
	    	Adapter->MiniportAdapterHandle,
	    	NDIS_ERROR_CODE_INTERRUPT_CONNECT,
	    	0
		);

		goto fail3;
    }

    DEBUGMSG(1,
	(TEXT("CS8900:RegisterAdapter Interrupt Connected\r\n")));

    // register	a shutdown handler for this card
	NdisMRegisterAdapterShutdownHandler(
		Adapter->MiniportAdapterHandle,		// miniport handle.
		Adapter,							// shutdown context.
		CS8900Shutdown						// shutdown handler.
		);
    
	/* Initialize The Interrupt */

	DEBUGMSG(1, (TEXT("CS8900RegisterAdapter:Initialize the Interrupt!\r\n")));

    //
    // Initialization completed	successfully.
    //
    DEBUGMSG(1, (TEXT("CS8900:RegisterAdapter OK\r\n")));

    return(NDIS_STATUS_SUCCESS);

    //
    // Code to unwind what has already been set	up when	a part of
    // initialization fails, which is jumped into at various
    // points based on where the failure occured. Jumping to
    // a higher-numbered failure point will execute the	code
    // for that	block and all lower-numbered ones.
    //

fail3:

    //
    // Take us out of the AdapterQueue.
    //

    if (CS8900MiniportBlock.AdapterQueue == Adapter)
    {
		CS8900MiniportBlock.AdapterQueue = Adapter->NextAdapter;
    }
    else
    {
		PCS8900_ADAPTER	TmpAdapter = CS8900MiniportBlock.AdapterQueue;

		while (TmpAdapter->NextAdapter != Adapter)
		{
			TmpAdapter = TmpAdapter->NextAdapter;
		}

		TmpAdapter->NextAdapter	= TmpAdapter->NextAdapter->NextAdapter;
    }

fail2:

    NdisMDeregisterIoPortRange(
		Adapter->MiniportAdapterHandle,
		(ULONG)Adapter->IoBaseAddr,
		0x20,
		(PVOID)Adapter->IoPAddr
    	);

    return(status);
}

extern
VOID
CS8900Shutdown(
    IN NDIS_HANDLE MiniportAdapterContext
    )
/*++

Routine	Description:

    CS8900Shutdown is called to	shut down the adapter. We need to unblock any
    threads which may be called	in, and	terminate any loops.  This function is
    called by the WinCE	NDIS.DLL when a	PCMCIA card removal is detected.  At that
    point, any access to the CS8900 registers may return random	data, as the bus
    is floating.

Arguments:

    MiniportAdapterContext - The context value that the	Miniport returned
	from CS8900Initialize; actually	as pointer to an CS8900_ADAPTER.

Return Value:

    None.

--*/	
{
    PCS8900_ADAPTER Adapter;

    Adapter = PCS8900_ADAPTER_FROM_CONTEXT_HANDLE(MiniportAdapterContext);

    Adapter->ShuttingDown = TRUE;

	DEBUGMSG(1, (TEXT("+CS8900:CS8900Shutdown - Not Implemented!\r\n")));
}


extern
VOID
CS8900Halt(
    IN NDIS_HANDLE MiniportAdapterContext
    )

/*++

Routine	Description:

    CS8900Halt removes an adapter that was previously initialized.

Arguments:

    MiniportAdapterContext - The context value that the	Miniport returned
	from CS8900Initialize; actually	as pointer to an CS8900_ADAPTER.

Return Value:

    None.

--*/

{
    PCS8900_ADAPTER Adapter;

    Adapter = PCS8900_ADAPTER_FROM_CONTEXT_HANDLE(MiniportAdapterContext);

	DEBUGMSG(1, (TEXT("+CS8900:CS8900Halt\r\n")));
//	while(1);
	
    return;
}




NDIS_STATUS
CS8900Reset(
    OUT	PBOOLEAN AddressingReset,
    IN NDIS_HANDLE MiniportAdapterContext
    )
/*++

Routine	Description:

    The	CS8900Reset 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:

    AddressingReset - Does the adapter need the	addressing information reloaded.

    MiniportAdapterContext - Pointer to	the adapter structure.

Return Value:

    The	function value is the status of	the operation.

--*/

{
    //
    // Pointer to the adapter structure.
    //
    PCS8900_ADAPTER Adapter = (PCS8900_ADAPTER)MiniportAdapterContext;

	DEBUGMSG(1, (TEXT("+CS8900:CS8900Reset\r\n")));
	RETAILMSG(1, (TEXT("----- !!!!!!!! reset !!!!!!!!!!! ------\r\n")));
//	while (1);

	return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
CS8900QueryInformation(
    IN NDIS_HANDLE MiniportAdapterContext,
    IN NDIS_OID	Oid,
    IN PVOID InformationBuffer,
    IN ULONG InformationBufferLength,
    OUT	PULONG BytesWritten,
    OUT	PULONG BytesNeeded
)

/*++

Routine	Description:

    The	CS8900QueryInformation process a Query request for
    NDIS_OIDs that are specific	about the Driver.

Arguments:

    MiniportAdapterContext - a pointer to the adapter.

    Oid	- the NDIS_OID to process.

    InformationBuffer -	 a pointer into	the
    NdisRequest->InformationBuffer into	which store the	result of the query.

    InformationBufferLength - a	pointer	to the number of bytes left in the
    InformationBuffer.

    BytesWritten - a pointer to	the number of bytes written into the
    InformationBuffer.

    BytesNeeded	- If there is not enough room in the information buffer
    then this will contain the number of bytes needed to complete the
    request.

Return Value:

    The	function value is the status of	the operation.

--*/
{

    //
    // Pointer to the adapter structure.
    //
    PCS8900_ADAPTER Adapter = (PCS8900_ADAPTER)MiniportAdapterContext;

    //
    //	 General Algorithm:
    //
    //	    Switch(Request)
    //	       Get requested information
    //	       Store results in	a common variable.
    //	    default:
    //	       Try protocol query information
    //	       If that fails, fail query.
    //
    //	    Copy result	in common variable to result buffer.
    //	 Finish	processing

    UINT BytesLeft = InformationBufferLength;
    PUCHAR InfoBuffer =	(PUCHAR)(InformationBuffer);
    NDIS_STATUS	StatusToReturn = NDIS_STATUS_SUCCESS;
    NDIS_HARDWARE_STATUS HardwareStatus	= NdisHardwareStatusReady;
    NDIS_MEDIUM	Medium = NdisMedium802_3;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性视频免费网站| 精品国产一区二区亚洲人成毛片| 91精品国产一区二区三区蜜臀| 精品国产成人在线影院| 中文幕一区二区三区久久蜜桃| 尤物视频一区二区| 国产成人av一区| 欧美肥胖老妇做爰| 亚洲日本一区二区| 国产盗摄一区二区| 6080日韩午夜伦伦午夜伦| 中文字幕视频一区| 国产米奇在线777精品观看| 欧美精品免费视频| 亚洲免费三区一区二区| 久久国产精品露脸对白| 欧美日韩高清一区| 艳妇臀荡乳欲伦亚洲一区| jlzzjlzz国产精品久久| 久久精品综合网| 精品亚洲欧美一区| 日韩午夜在线影院| 亚洲3atv精品一区二区三区| 91网上在线视频| 国产精品久久看| 粉嫩欧美一区二区三区高清影视| 欧美岛国在线观看| 久久国产生活片100| 91麻豆精品国产自产在线| 亚洲一区二区欧美| 欧美性色黄大片| 亚洲国产精品麻豆| 欧美色电影在线| 亚洲bt欧美bt精品777| 精品视频资源站| 婷婷丁香激情综合| 欧美二区乱c少妇| 午夜精品久久久久影视| 欧美日本乱大交xxxxx| 亚洲成年人网站在线观看| 欧美日韩国产不卡| 久久狠狠亚洲综合| 国产午夜精品在线观看| 国产精品一区二区三区99| 国产午夜精品理论片a级大结局| 国产精品一区在线| 欧美激情一区二区三区蜜桃视频| 成人动漫视频在线| 亚洲综合视频网| 在线播放欧美女士性生活| 男男视频亚洲欧美| 欧美激情一区二区三区全黄| av在线综合网| 亚洲国产一区二区视频| 91精品国产综合久久福利软件 | 精品国产一区二区三区久久影院| 麻豆高清免费国产一区| 国产日韩精品视频一区| 一本久久a久久精品亚洲| 舔着乳尖日韩一区| 国产亚洲女人久久久久毛片| 色综合 综合色| 免费成人美女在线观看.| 欧美国产精品中文字幕| 欧美中文字幕不卡| 国产精品影视网| 一区二区久久久久久| 精品区一区二区| av不卡在线播放| 日韩不卡一区二区| 日韩理论片一区二区| 日韩欧美中文一区| 91在线视频播放| 久久精品国产99久久6| 亚洲精品少妇30p| 2欧美一区二区三区在线观看视频| av在线不卡电影| 日韩理论在线观看| 欧美精品久久久久久久多人混战| 激情图片小说一区| 综合在线观看色| 欧美日韩国产大片| 丰满少妇在线播放bd日韩电影| 欧美日韩一区二区三区四区五区| 日韩国产在线观看一区| 精品夜夜嗨av一区二区三区| 欧美激情一区二区三区不卡| 欧美三级日韩三级| 国产福利精品一区| 日韩电影在线一区二区三区| 欧美激情一区二区三区蜜桃视频 | 久久久久久久久免费| 91丝袜国产在线播放| 亚洲精品乱码久久久久久黑人| 日韩视频一区二区| 在线亚洲高清视频| 国产剧情一区二区三区| 婷婷六月综合网| 亚洲精品伦理在线| 国产日产欧美一区| 日韩精品一区二区三区四区视频| 国产激情91久久精品导航| 蜜桃久久av一区| 亚洲线精品一区二区三区八戒| 欧美国产精品中文字幕| 日韩欧美国产午夜精品| 欧美这里有精品| 91免费版在线看| 丰满放荡岳乱妇91ww| 成人午夜电影小说| 另类综合日韩欧美亚洲| 五月天视频一区| 亚洲女子a中天字幕| 国产精品每日更新| 久久久久国色av免费看影院| 日韩一区二区免费视频| 欧美色图一区二区三区| 色狠狠av一区二区三区| 成人app软件下载大全免费| 国产精品一区二区在线播放| 久久精品国产澳门| 老司机一区二区| 久久97超碰国产精品超碰| 日韩黄色免费电影| 五月天中文字幕一区二区| 亚洲永久精品国产| 一区2区3区在线看| 亚洲另类中文字| 亚洲区小说区图片区qvod| 国产精品美女久久久久aⅴ国产馆| 国产农村妇女精品| 久久精子c满五个校花| 久久夜色精品一区| 亚洲欧美一区二区在线观看| 中文幕一区二区三区久久蜜桃| 国产欧美一区二区精品性色 | 青青草成人在线观看| 蜜乳av一区二区三区| 久久99热狠狠色一区二区| 精品一区二区av| 老司机午夜精品99久久| 国产精品99久| 成人免费观看男女羞羞视频| www.一区二区| 在线一区二区三区四区五区| 91福利视频网站| 欧美性大战久久久| 久久网这里都是精品| 亚洲国产精品黑人久久久| 国产三级三级三级精品8ⅰ区| 国产精品福利一区| 亚洲摸摸操操av| 日本亚洲最大的色成网站www| 国产91丝袜在线观看| 91亚洲精品久久久蜜桃| 日韩三级电影网址| 亚洲欧美成aⅴ人在线观看| 精品中文字幕一区二区小辣椒| k8久久久一区二区三区 | 色综合色狠狠综合色| 欧美一区二区观看视频| 久久久久国产精品麻豆| 亚洲欧美精品午睡沙发| 男人的天堂亚洲一区| 国产99一区视频免费| 91精品国产全国免费观看 | 色www精品视频在线观看| 欧美一区二区三区婷婷月色| 日本一二三四高清不卡| 亚洲成人精品一区二区| av成人老司机| 欧美成人艳星乳罩| 一区二区久久久久| 国产电影一区二区三区| 精品人伦一区二区色婷婷| 一区二区三区中文在线观看| 紧缚捆绑精品一区二区| 欧美综合色免费| 国产喂奶挤奶一区二区三区| 亚洲欧美日韩在线播放| 国产a久久麻豆| 91精品国产免费| 午夜精品久久久久久久久久久 | 色偷偷久久一区二区三区| 久久久精品黄色| 日韩精品久久久久久| 成人黄色小视频| 久久综合九色综合97婷婷| 亚洲综合色婷婷| 欧美中文字幕不卡| 中文字幕日韩av资源站| 国内成人精品2018免费看| 欧美午夜电影在线播放| 国产精品麻豆欧美日韩ww| 高清日韩电视剧大全免费| 91精品国产综合久久精品麻豆| 综合婷婷亚洲小说| 粉嫩aⅴ一区二区三区四区五区| 日韩精品一区在线| 午夜精品久久久久久久99樱桃|