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

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

?? miniport.c

?? s3c2440 WINCE 5.00 官方bsp
?? C
?? 第 1 頁 / 共 3 頁
字號:
	    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.
    //
#if 0
    status = NdisMRegisterInterrupt(
		 &Adapter->Interrupt,
		 Adapter->MiniportAdapterHandle,
		 Adapter->InterruptNumber,
		 Adapter->InterruptNumber,
		 FALSE,
		 FALSE,
		 NdisInterruptLatched
	     );
#else
    status = NdisMRegisterInterrupt(
		 &Adapter->Interrupt,
		 Adapter->MiniportAdapterHandle,
		 Adapter->InterruptNumber,
		 Adapter->InterruptNumber,
		 TRUE,
		 FALSE,
		 NdisInterruptLatched
	     );
#endif
    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")));
//	while (1);
	resetCS();

	initCS();

	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;

    //
    // This variable holds result of query
    //
    ULONG GenericULong;
    USHORT GenericUShort;
    UCHAR GenericArray[6];
    UINT MoveBytes = sizeof(ULONG);
    PVOID MoveSource = (PVOID)(&GenericULong);

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

    //
    // Make sure that int is 4 bytes.  Else GenericULong must change
    // to something of size 4.
    //
    ASSERT(sizeof(ULONG) == 4);

    //
    // Switch on request type
    //

    switch (Oid) {

    case OID_GEN_MAC_OPTIONS:

		GenericULong = (ULONG)(NDIS_MAC_OPTION_TRANSFERS_NOT_PEND  |
			       NDIS_MAC_OPTION_RECEIVE_SERIALIZED  |
			       NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA |
			       NDIS_MAC_OPTION_NO_LOOPBACK
			       );
			       
		DEBUGMSG(1, (TEXT("----> OID_GEN_MAC_OPTIONS\r\n")));
		break;

    case OID_GEN_SUPPORTED_LIST:

		MoveSource = (PVOID)(CS8900SupportedOids);
		MoveBytes = sizeof(CS8900SupportedOids);
	
		DEBUGMSG(1, (TEXT("----> OID_GEN_SUPPORTED_LIST\r\n")));
		break;

    case OID_GEN_HARDWARE_STATUS:

		HardwareStatus = NdisHardwareStatusReady;
		MoveSource = (PVOID)(&HardwareStatus);
		MoveBytes = sizeof(NDIS_HARDWARE_STATUS);

		DEBUGMSG(1, (TEXT("----> OID_GEN_HARDWARE_STATUS\r\n")));
		break;

    case OID_GEN_MEDIA_SUPPORTED:
    case OID_GEN_MEDIA_IN_USE:

		MoveSource = (PVOID) (&Medium);
		MoveBytes = sizeof(NDIS_MEDIUM);

		DEBUGMSG(1, (TEXT("----> OID_GEN_MEDIA\r\n")));
		break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品免费在线| 国产精品亚洲专一区二区三区 | 欧美a级理论片| 亚洲成人av免费| 国产精品第五页| 亚洲蜜臀av乱码久久精品| 国产精品国产三级国产aⅴ原创| 国产精品婷婷午夜在线观看| 国产午夜精品久久久久久免费视| 久久精品人人做人人爽97| 久久综合九色综合97婷婷| 久久亚洲一级片| 国产亚洲福利社区一区| 国产欧美一区在线| 综合久久国产九一剧情麻豆| 国产精品传媒在线| 综合久久久久综合| 亚洲人午夜精品天堂一二香蕉| 有码一区二区三区| 男人的天堂亚洲一区| 成人动漫一区二区在线| 成人亚洲精品久久久久软件| 国产精品亚洲一区二区三区在线| 亚洲欧美偷拍三级| 久久一留热品黄| 亚洲欧洲在线观看av| 免费观看在线综合色| 色综合久久中文综合久久牛| 精品精品国产高清a毛片牛牛| 亚洲三级久久久| 狠狠色丁香久久婷婷综合丁香| 91在线国产福利| 精品国产亚洲在线| 韩国av一区二区| 日韩精品一区二区三区中文精品 | 在线观看亚洲a| 91精品婷婷国产综合久久竹菊| 国产精品嫩草影院av蜜臀| 精品亚洲aⅴ乱码一区二区三区| 欧美日韩日日摸| 亚洲午夜视频在线| 色偷偷88欧美精品久久久| 国产精品久久精品日日| 国产91丝袜在线观看| 久久综合九色综合欧美就去吻| 日本欧美肥老太交大片| 亚洲国产精品自拍| 欧美日韩亚洲综合一区二区三区| 亚洲美女区一区| 91免费版pro下载短视频| 国产精品久久久久国产精品日日| 国产999精品久久| 国产精品狼人久久影院观看方式| 国产福利91精品| 日韩你懂的在线观看| 一区二区三区国产精华| 成人丝袜高跟foot| 26uuu成人网一区二区三区| 亚洲va欧美va天堂v国产综合| 国产精品一区二区三区四区| 欧美电影在线免费观看| 亚洲伦在线观看| 粉嫩嫩av羞羞动漫久久久| 欧美一级精品在线| 亚洲18女电影在线观看| av电影天堂一区二区在线| 久久色在线视频| 久久99国产精品成人| 欧美一级理论性理论a| 婷婷一区二区三区| 欧美无砖专区一中文字| 亚洲男人天堂av| 99久久综合国产精品| 中文字幕一区二区三区在线不卡 | 中文字幕成人av| 国产一区二区精品久久99| 久久综合狠狠综合久久激情| 精品在线播放午夜| www激情久久| 国产传媒久久文化传媒| 国产日韩欧美一区二区三区乱码 | 九九久久精品视频| 欧美精品一区二区三区很污很色的 | 天天操天天色综合| 日韩欧美国产电影| 国产一区二区h| 综合色中文字幕| 欧美日韩国产一级| 麻豆国产一区二区| 国产日韩在线不卡| 欧美性高清videossexo| 日本一不卡视频| 国产视频视频一区| 91尤物视频在线观看| 日韩国产精品大片| 中文欧美字幕免费| 欧美日韩国产精品自在自线| 精品亚洲成a人在线观看| 国产精品乱码妇女bbbb| 欧美自拍偷拍一区| 精品一区二区成人精品| 亚洲欧美日韩久久| 精品免费国产二区三区 | 欧美va亚洲va在线观看蝴蝶网| 国产成人免费视频精品含羞草妖精| 亚洲天堂av一区| 日韩欧美在线123| 一本色道综合亚洲| 精品一区二区精品| 亚洲国产人成综合网站| 欧美日韩在线免费视频| 成人福利在线看| 日韩影院精彩在线| 国产精品电影一区二区| 日韩精品一区二区在线观看| 欧美在线色视频| 成人黄色av网站在线| 日韩av一区二区三区四区| 亚洲精品免费电影| 久久综合av免费| 日韩欧美在线影院| 欧美日韩三级一区| 色哟哟国产精品免费观看| 国产精品66部| 韩日欧美一区二区三区| 日本成人超碰在线观看| 亚洲成av人片一区二区梦乃 | 懂色av噜噜一区二区三区av| 精品一区二区三区免费| 三级在线观看一区二区| 亚洲高清视频在线| 亚洲成人免费观看| 一区二区三区精品在线| 一区二区三区中文字幕| 一区二区三区不卡视频| 亚洲免费观看在线视频| 亚洲日本一区二区| 亚洲视频在线一区观看| 一区二区三区四区在线免费观看| 亚洲欧洲日本在线| 中文字幕一区三区| 亚洲人成精品久久久久久| 国产精品成人免费在线| 亚洲欧美日韩电影| 亚洲午夜一二三区视频| 午夜精品成人在线| 日本伊人色综合网| 国产自产v一区二区三区c| 国产麻豆午夜三级精品| 波波电影院一区二区三区| 不卡在线观看av| 在线观看日韩国产| 欧美日韩不卡一区二区| 精品久久久久久久久久久久包黑料 | 亚洲欧美日韩国产手机在线| 亚洲一区二区三区四区在线免费观看| 亚洲国产三级在线| 国内精品不卡在线| 91免费版在线| 精品国产一区二区三区久久久蜜月| 久久精品人人做人人综合| 一区二区三区在线观看欧美| 日韩av高清在线观看| 国产传媒欧美日韩成人| 欧美无砖砖区免费| 久久综合九色综合97婷婷女人 | 国产精品久久久久久久岛一牛影视| 日韩毛片在线免费观看| 秋霞成人午夜伦在线观看| 成人美女视频在线看| 欧美男生操女生| 成人免费在线播放视频| 日韩一区欧美二区| av综合在线播放| 日韩欧美成人一区二区| 亚洲丝袜美腿综合| 国产精品综合一区二区| 欧美日韩精品一区二区三区蜜桃| 国产精品久久综合| 国产精选一区二区三区| 欧美一区二区三区四区在线观看 | 日韩精品一区二区三区老鸭窝| **欧美大码日韩| 成人国产精品免费观看动漫| 日韩欧美一二三| 蜜桃av一区二区三区| 欧美日韩一区二区三区在线看| 中文字幕一区av| 国产一区二区0| 精品国产乱码久久久久久久久 | 成人动漫av在线| 久久免费看少妇高潮| 久久福利视频一区二区| 日韩欧美中文字幕制服| 美女网站色91| 日韩一区二区三区电影| 日精品一区二区三区| 欧美一区二区三区思思人| 午夜影院在线观看欧美| 9191成人精品久久|