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

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

?? miniport.c

?? windows ce 50 drive program
?? C
?? 第 1 頁 / 共 3 頁
字號:
    case OID_GEN_MAXIMUM_LOOKAHEAD:

		GenericULong = CS8900_MAX_LOOKAHEAD;

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


    case OID_GEN_MAXIMUM_FRAME_SIZE:

		GenericULong = (ULONG)(1518 - CS8900_HEADER_SIZE);

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


    case OID_GEN_MAXIMUM_TOTAL_SIZE:

		GenericULong = (ULONG)(1518);

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


    case OID_GEN_LINK_SPEED:

		GenericULong = (ULONG)(100000);

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


    case OID_GEN_TRANSMIT_BUFFER_SPACE:

		GenericULong = (ULONG)(1518);

		DEBUGMSG(1, (TEXT("----> OID_GEN_TRANSMIT_BUFFER_SPACE\r\n")));
//		while(1);
		break;

    case OID_GEN_RECEIVE_BUFFER_SPACE:

		GenericULong = (ULONG)(1518);

		DEBUGMSG(1, (TEXT("----> OID_GEN_RECEIVE_BUFFER_SPACE\r\n")));
//		while(1);
		break;

    case OID_GEN_TRANSMIT_BLOCK_SIZE:

		GenericULong = (ULONG)(1518);

		DEBUGMSG(1, (TEXT("----> OID_GEN_TRANSMIT_BLOCK_SIZE\r\n")));
//		while(1);
		break;

    case OID_GEN_RECEIVE_BLOCK_SIZE:

		GenericULong = (ULONG)(1518);

		DEBUGMSG(1, (TEXT("----> OID_GEN_RECEIVE_BLOCK_SIZE\r\n")));
//		while(1);
		break;

#ifdef CS8900

    case OID_GEN_VENDOR_ID:

		NdisMoveMemory(
	    	(PVOID)&GenericULong,
	    	Adapter->PermanentAddress,
	    	3
	    	);
		GenericULong &=	0xFFFFFF00;
		MoveSource = (PVOID)(&GenericULong);
		MoveBytes = sizeof(GenericULong);

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

    case OID_GEN_VENDOR_DESCRIPTION:

		MoveSource = (PVOID)"CS8900A Adapter";
		MoveBytes = 21;

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

#else

    case OID_GEN_VENDOR_ID:

		NdisMoveMemory(
	    	(PVOID)&GenericULong,
	    	Adapter->PermanentAddress,
	    	3
	    	);
		GenericULong &=	0xFFFFFF00;
		GenericULong |=	0x01;
		MoveSource = (PVOID)(&GenericULong);
		MoveBytes = sizeof(GenericULong);

		break;

    case OID_GEN_VENDOR_DESCRIPTION:

		MoveSource = (PVOID)"Novell 1000 Adapter.";
		MoveBytes = 21;

		break;

#endif

    case OID_GEN_DRIVER_VERSION:

		GenericUShort =	((USHORT)CS8900_NDIS_MAJOR_VERSION << 8) |
			CS8900_NDIS_MINOR_VERSION;

		MoveSource = (PVOID)(&GenericUShort);
		MoveBytes = sizeof(GenericUShort);
		break;

    case OID_GEN_CURRENT_LOOKAHEAD:

		GenericULong = (ULONG)(Adapter->MaxLookAhead);

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

    case OID_802_3_PERMANENT_ADDRESS:

		CS8900_MOVE_MEM((PCHAR)GenericArray,
		    Adapter->PermanentAddress,
		    CS8900_LENGTH_OF_ADDRESS);

		MoveSource = (PVOID)(GenericArray);
		MoveBytes = sizeof(Adapter->PermanentAddress);

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

    case OID_802_3_CURRENT_ADDRESS:

		CS8900_MOVE_MEM((PCHAR)GenericArray,
		    Adapter->StationAddress,
		    CS8900_LENGTH_OF_ADDRESS);

		MoveSource = (PVOID)(GenericArray);
		MoveBytes = sizeof(Adapter->StationAddress);

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

    case OID_802_3_MAXIMUM_LIST_SIZE:

		GenericULong = (ULONG) (Adapter->MulticastListMax);

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

    case OID_GEN_XMIT_OK:

		GenericULong = (UINT)(Adapter->FramesXmitGood);

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

    case OID_GEN_RCV_OK:

		GenericULong = (UINT)(Adapter->FramesRcvGood);

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

    case OID_GEN_XMIT_ERROR:

		GenericULong = (UINT)(Adapter->FramesXmitBad);
		DEBUGMSG(1, (TEXT("----> OID_GEN_XMIT_ERROR\r\n")));
		break;

    case OID_GEN_RCV_ERROR:

		GenericULong = (UINT)(Adapter->CrcErrors);
		DEBUGMSG(1, (TEXT("----> OID_GEN_RCV_ERROR\r\n")));
		break;

    case OID_GEN_RCV_NO_BUFFER:

		GenericULong = (UINT)(Adapter->MissedPackets);
		DEBUGMSG(1, (TEXT("----> OID_GEN_RCV_NO_BUFFER\r\n")));
		break;

    case OID_802_3_RCV_ERROR_ALIGNMENT:

		GenericULong = (UINT)(Adapter->FrameAlignmentErrors);
		DEBUGMSG(1, (TEXT("----> OID_802_3_RCV_ERROR_ALIGNMENT\r\n")));
		break;

    case OID_802_3_XMIT_ONE_COLLISION:

		GenericULong = (UINT)(Adapter->FramesXmitOneCollision);
		DEBUGMSG(1, (TEXT("----> OID_802_3_XMIT_ONE_COLLISION\r\n")));
		break;

    case OID_802_3_XMIT_MORE_COLLISIONS:

		GenericULong = (UINT)(Adapter->FramesXmitManyCollisions);
		break;


    case OID_GEN_MEDIA_CONNECT_STATUS:		
		GenericULong = NdisMediaStateConnected;                 
		break;

    case OID_GEN_MAXIMUM_SEND_PACKETS:

        	GenericULong = 1;
        	break;
		
    case OID_GEN_VENDOR_DRIVER_VERSION:		
		GenericULong = (DRIVER_MAJOR_VERSION << 16) | DRIVER_MINOR_VERSION;
		break;
		

    default:

		StatusToReturn = NDIS_STATUS_INVALID_OID;
		break;

    }


    if (StatusToReturn == NDIS_STATUS_SUCCESS) {

		if (MoveBytes >	BytesLeft) {

			//
	    	// Not enough room in InformationBuffer. Punt
	    	//

	    	*BytesNeeded = MoveBytes;

	    	StatusToReturn = NDIS_STATUS_INVALID_LENGTH;

		} else {

	    	//
	    	// Store result.
	    	//

	    	CS8900_MOVE_MEM(InfoBuffer,	MoveSource, MoveBytes);

	    	(*BytesWritten) += MoveBytes;

		}
    }

	DEBUGMSG(1, (TEXT("-CS8900:CS8900QueryInformation\r\n")));
    return StatusToReturn;
}

extern
NDIS_STATUS
CS8900SetInformation(
    IN NDIS_HANDLE MiniportAdapterContext,
    IN NDIS_OID	Oid,
    IN PVOID InformationBuffer,
    IN ULONG InformationBufferLength,
    OUT	PULONG BytesRead,
    OUT	PULONG BytesNeeded
    )

/*++

Routine	Description:

    CS8900SetInformation handles a set operation for a
    single OID.

Arguments:

    MiniportAdapterContext - Context registered	with the wrapper, really
	a pointer to the adapter.

    Oid	- The OID of the set.

    InformationBuffer -	Holds the data to be set.

    InformationBufferLength - The length of InformationBuffer.

    BytesRead -	If the call is successful, returns the number
	of bytes read from InformationBuffer.

    BytesNeeded	- If there is not enough data in InformationBuffer
	to satisfy the OID, returns the	amount of storage needed.

Return Value:

    NDIS_STATUS_SUCCESS
    NDIS_STATUS_PENDING
    NDIS_STATUS_INVALID_LENGTH
    NDIS_STATUS_INVALID_OID

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

    //
    // General Algorithm:
    //
    //	   Verify length
    //	   Switch(Request)
    //	      Process Request
    //

    UINT BytesLeft = InformationBufferLength;
    PUCHAR InfoBuffer =	(PUCHAR)(InformationBuffer);

    //
    // Variables for a particular request
    //
    UINT OidLength;

    //
    // Variables for holding the new values to be used.
    //
    ULONG LookAhead;
    ULONG Filter;

    //
    // Status of the operation.
    //
    NDIS_STATUS	StatusToReturn = NDIS_STATUS_SUCCESS;


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

    //
    // Get Oid and Length of request
    //
    OidLength =	BytesLeft;

    switch (Oid) {

    case OID_802_3_MULTICAST_LIST:

		DEBUGMSG(1, (TEXT("OID_802_3_MULTICAST_LIST\r\n")));

		//
		// Verify length
		//
		if ((OidLength % CS8900_LENGTH_OF_ADDRESS) != 0)
		{
			StatusToReturn = NDIS_STATUS_INVALID_LENGTH;

	    	*BytesRead = 0;
	    	*BytesNeeded = 0;

	   		break;
		}

		//
		// Set the new list on the adapter.
		//
		NdisMoveMemory(Adapter->Addresses, InfoBuffer, OidLength);
	
		break;

    case OID_GEN_CURRENT_PACKET_FILTER:

		DEBUGMSG(1, (TEXT("OID_GEN_CURRENT_PACKET_FILTER\r\n")));

		//
		// Verify length
		//

		if (OidLength != 4 ) {

	    	StatusToReturn = NDIS_STATUS_INVALID_LENGTH;

	    	*BytesRead = 0;
	    	*BytesNeeded = 0;

			break;

		}

		CS8900_MOVE_MEM(&Filter, InfoBuffer, 4);

		//
		// Verify bits
		//

		if (Filter & (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;

	    	*BytesRead = 4;
	    	*BytesNeeded = 0;

	    	break;

		}

		break;

    case OID_GEN_CURRENT_LOOKAHEAD:

		DEBUGMSG(1, (TEXT("OID_GEN_CURRENT_LOOKAHEAD\r\n")));

		//
		// Verify length
		//

		if (OidLength != 4) {
		
			StatusToReturn = NDIS_STATUS_INVALID_LENGTH;

	    	*BytesRead = 0;
	    	*BytesNeeded = 0;

	    	break;

		}

		//
		// Store the new value.
		//

		CS8900_MOVE_MEM(&LookAhead, InfoBuffer,	4);

		if (LookAhead <= CS8900_MAX_LOOKAHEAD) {
			Adapter->MaxLookAhead = LookAhead;
		} else {
			StatusToReturn = NDIS_STATUS_INVALID_LENGTH;
		}

		break;

    default:

		StatusToReturn = NDIS_STATUS_INVALID_OID;

		*BytesRead = 0;
		*BytesNeeded = 0;

		break;
    }


    if (StatusToReturn == NDIS_STATUS_SUCCESS) {

		*BytesRead = BytesLeft;
		*BytesNeeded = 0;

    }

    DEBUGMSG(1, (TEXT("-CS8900:CS8900SetInformation\r\n")));
    return(StatusToReturn);
}

VOID
CS8900CancelSendPackets(
   IN NDIS_HANDLE MiniportAdapterContext,
   IN PVOID pvCancelId
)
/*++

Routine Description:
   The miniport entry point to handle cancellation of all send packets
   that match the given CancelId. If we have queued any packets that match
   this, then we should dequeue them and call NdisMSendComplete for all
   such packets, with a status of NDIS_STATUS_REQUEST_ABORTED.

   We should also call NdisCancelSendPackets in turn, on each lower binding
   that this adapter corresponds to. This is to let miniports below cancel
   any matching packets.

Arguments:
   hMiniportAdapterContext - pointer to the binding structure
   pvCancelId - ID of packets to be cancelled.

Return Value:
   None

--*/
{
    PCS8900_ADAPTER Adapter = (PCS8900_ADAPTER)MiniportAdapterContext;


   //
   // If we queue packets on our adapter structure, this would be 
   // the place to acquire a spinlock to it, unlink any packets whose
   // Id matches CancelId, release the spinlock and call NdisMSendComplete
   // with NDIS_STATUS_REQUEST_ABORTED for all unlinked packets.
   //

   //
   // Next, pass this down so that we let the miniport(s) below cancel
   // any packets that they might have queued.
   //
//   NdisCancelSendPackets(Adapter->hPTBinding, pvCancelId);
   DEBUGMSG(ETHDBG, (TEXT("CS8900CancelSendPackets\n")));
   return;
}

VOID
CS8900DevicePnPEvent(
   IN NDIS_HANDLE MiniportAdapterContext,
   IN NDIS_DEVICE_PNP_EVENT  devicePnPEvent,
   IN PVOID pvInformationBuffer,
   IN ULONG ulInformationBufferLength
)
/*++

Routine Description:
   This handler is called to notify us of PnP events directed to
   our miniport device object.

Arguments:
   hMiniportAdapterContext  - pointer to the binding structure
   devicePnPEvent - the event
   pvInformationBuffer - points to additional event-specific information
   ulInformationBufferLength - length of above

Return Value:
   None

--*/
{
   // TBD - add code/comments about processing this.
    PCS8900_ADAPTER Adapter = (PCS8900_ADAPTER)MiniportAdapterContext;


   DEBUGMSG(ETHDBG, (TEXT("MiniportDevicePnPEvent\n")));
   return ;
}


VOID
CS8900AdapterShutdown(
   IN NDIS_HANDLE MiniportAdapterContext
)
/*++

Routine Description:
   This handler is called to notify us of an impending system shutdown.

Arguments:
   MiniportAdapterContext  - pointer to the binding structure

Return Value:
   None

--*/
{
    PCS8900_ADAPTER Adapter = (PCS8900_ADAPTER)MiniportAdapterContext;


   DEBUGMSG(ETHDBG, (TEXT("MiniportAdapterShutdown:\r\n")));
   return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美放荡的少妇| 色婷婷综合五月| 亚洲免费av高清| 在线不卡欧美精品一区二区三区| kk眼镜猥琐国模调教系列一区二区| 国产美女在线观看一区| www国产亚洲精品久久麻豆| 亚洲欧美乱综合| 日韩精品国产欧美| 波多野结衣的一区二区三区| 国产高清不卡二三区| 欧美美女喷水视频| 亚洲精品乱码久久久久久久久| 国产乱理伦片在线观看夜一区| 国产日韩精品久久久| 久久精品国产免费看久久精品| 日韩欧美的一区| www.亚洲人| 久热成人在线视频| 一片黄亚洲嫩模| 久久午夜国产精品| 91成人看片片| 国产一区二区日韩精品| 亚洲成人第一页| 国产精品麻豆欧美日韩ww| 91精品国产乱| 欧美制服丝袜第一页| 国产精品一品二品| 日本视频在线一区| 亚洲黄色免费电影| 国产欧美日韩另类一区| 欧美精品在线观看播放| 国产乱码精品一区二区三区五月婷| 亚洲一区二区三区在线播放| 日韩一区在线看| 久久久午夜精品| 日韩欧美一区二区免费| 99久久伊人久久99| 国产一区二区三区在线观看免费视频 | av在线这里只有精品| 久久精品国产亚洲一区二区三区| 亚洲黄色小说网站| 亚洲成人777| 亚洲成人久久影院| 天堂一区二区在线| 日韩高清在线一区| 男男视频亚洲欧美| 黄色精品一二区| 国产精品一区二区免费不卡| 国产 日韩 欧美大片| 免费av成人在线| 久久亚洲一区二区三区明星换脸| 日韩久久免费av| 欧美日韩日本视频| 欧美在线不卡一区| 99久久精品国产毛片| 精品一区二区三区在线观看| 中文在线一区二区| 国产欧美中文在线| 亚洲国产成人午夜在线一区| 精品动漫一区二区三区在线观看| 麻豆成人久久精品二区三区红| 天堂精品中文字幕在线| 青青青伊人色综合久久| 国产一区二区在线看| av一区二区久久| 欧美日韩在线三级| 久久综合99re88久久爱| 亚洲国产高清在线观看视频| 17c精品麻豆一区二区免费| 亚洲成av人片www| 精品亚洲国内自在自线福利| 成人午夜电影网站| 欧美视频在线一区二区三区| 日韩一区二区影院| 国产精品剧情在线亚洲| 亚洲综合偷拍欧美一区色| 日本视频在线一区| 成人av在线一区二区| 欧美日韩精品一区二区三区| 久久久久久久久久久黄色| 伊人夜夜躁av伊人久久| 精品一区二区三区免费毛片爱| 国产传媒一区在线| 欧美人狂配大交3d怪物一区| 国产午夜精品理论片a级大结局 | 日韩美女在线视频| 日韩一区在线免费观看| 婷婷亚洲久悠悠色悠在线播放| 久久99国产精品久久99| 色综合咪咪久久| 精品日韩99亚洲| 亚洲一区二区av电影| 国产一区二区三区四区在线观看| 在线国产亚洲欧美| 国产日韩欧美一区二区三区综合| 亚洲国产精品一区二区久久| 国产精品影视在线| 欧美日韩和欧美的一区二区| 亚洲国产精品成人综合色在线婷婷| 午夜激情久久久| 不卡一区中文字幕| 亚洲精品在线网站| 国模大尺度一区二区三区| 欧美v日韩v国产v| 免费在线观看精品| 欧美国产乱子伦 | 色婷婷综合久久久久中文| 精品乱码亚洲一区二区不卡| 一二三四社区欧美黄| 99久久国产综合精品麻豆| 久久久久97国产精华液好用吗| 免费成人av在线| 日韩欧美三级在线| 久久国产欧美日韩精品| 欧美精品一区二区三区蜜桃| 亚洲综合av网| 色欧美片视频在线观看| 国产精品视频你懂的| 国产精品自拍网站| 欧美va亚洲va国产综合| 亚洲成人免费影院| 欧美日韩一级二级三级| 中文字幕亚洲在| 国产成人亚洲精品狼色在线| 日韩精品一区二区三区老鸭窝| 污片在线观看一区二区| 欧洲精品中文字幕| 亚洲最新在线观看| 色综合久久久久网| 一区二区三区加勒比av| 色婷婷亚洲综合| 亚洲精品一二三区| 欧美性一区二区| 亚洲综合小说图片| 欧美日韩精品电影| 天天爽夜夜爽夜夜爽精品视频| 欧美色成人综合| 午夜日韩在线观看| 在线播放视频一区| 久久er精品视频| 久久久久久久久久电影| 国产黄色精品网站| 国产精品免费网站在线观看| 成人高清av在线| 亚洲男人天堂av网| 欧美理论电影在线| 日本三级亚洲精品| www精品美女久久久tv| 高清不卡一区二区在线| 亚洲国产乱码最新视频| 欧美日韩一区高清| 水蜜桃久久夜色精品一区的特点| 91精品国产高清一区二区三区| 蜜桃精品在线观看| 久久精品夜夜夜夜久久| www.在线成人| 性做久久久久久久久| 欧美成人一区二区三区片免费 | 欧美日韩在线播| 日韩国产一二三区| 日本午夜一区二区| 亚洲一区二区美女| 日本视频在线一区| 日本丶国产丶欧美色综合| 狠狠色狠狠色综合系列| 日本欧美一区二区三区| 日韩一区精品视频| 天堂av在线一区| 一区2区3区在线看| 天堂va蜜桃一区二区三区| 亚洲综合免费观看高清完整版在线 | 成人午夜伦理影院| 日本韩国欧美一区二区三区| 亚洲日本在线a| 制服丝袜国产精品| www.日韩精品| 亚洲va欧美va天堂v国产综合| 精品国产一区二区三区忘忧草| a亚洲天堂av| 秋霞国产午夜精品免费视频| 国产精品麻豆一区二区| 欧美伦理电影网| 成人av在线观| 日韩av在线播放中文字幕| 中文字幕巨乱亚洲| 欧美一区二区三区爱爱| voyeur盗摄精品| 久久97超碰色| 亚洲另类一区二区| 久久―日本道色综合久久| 欧美午夜精品免费| 成人国产精品免费观看动漫 | 麻豆传媒一区二区三区| 一区二区三区四区在线| 久久久久久久久久久久久久久99 | 美国精品在线观看| 久久99久久久久久久久久久| 久久电影网站中文字幕| 日本韩国一区二区|