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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? asyncmac.c

?? wince3.0的源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
		InitializeCriticalSection(&v_AdapterCS);
        DEBUGMSG(ZONE_INIT, (TEXT("ASYNCMAC: DLL_PROCESS_ATTACH\n")));
        break;
    case DLL_PROCESS_DETACH:
        DEBUGMSG(ZONE_INIT, (TEXT("ASYNCMAC: DLL_PROCESS_DETACH\n")));
		DeleteCriticalSection(&v_AdapterCS);
        break;
    }
    return TRUE;
}


VOID	
MpHalt(
	IN NDIS_HANDLE	MiniportAdapterContext
	)
{
	DEBUGMSG (ZONE_INIT|ZONE_INTERFACE, (TEXT("+ASYNCMAC:MpHalt(0x%X)\n"), MiniportAdapterContext));

	EnterCriticalSection(&v_AdapterCS);
    AsyncMacFreeMemory(MiniportAdapterContext, sizeof(ASYNCMAC_ADAPTER));
	v_pAdapter = NULL;
	v_GlobalAdapterCount--;
	LeaveCriticalSection(&v_AdapterCS);

	DEBUGMSG (ZONE_INIT|ZONE_INTERFACE, (TEXT("-ASYNCMAC:MpHalt\n")));
}


NDIS_STATUS
MpInit(
	OUT PNDIS_STATUS	OpenErrorStatus,
	OUT PUINT			SelectedMediumIndex,
	IN	PNDIS_MEDIUM	MediumArray,
	IN	UINT			MediumArraySize,
	IN	NDIS_HANDLE		MiniportAdapterHandle,
	IN	NDIS_HANDLE		WrapperConfigurationContext
	)
{
	NDIS_STATUS						Status;
    UINT							i;		// counter
	PASYNCMAC_ADAPTER				pAdapter;
    NDIS_HANDLE						ConfigHandle;
    PNDIS_CONFIGURATION_PARAMETER	ReturnedValue;
    NDIS_STRING						MaxFrameSizeStr = NDIS_STRING_CONST("MaxFrameSize");
    NDIS_STRING						MaxSendFrameSizeStr = NDIS_STRING_CONST("MaxSendFrameSize");
    NDIS_STRING						MaxRecvFrameSizeStr = NDIS_STRING_CONST("MaxRecvFrameSize");
    NDIS_STRING						RecvBufSizeStr = NDIS_STRING_CONST("ReceiveBufferSize");
    NDIS_STRING						RecvThreadPrioStr = NDIS_STRING_CONST("ReceiveThreadPriority256");

	DEBUGMSG (ZONE_INIT|ZONE_INTERFACE,
			  (TEXT("+ASYNCMAC:MpInit(0x%X, 0x%X, 0x%X, %d, 0x%X, 0x%X)\r\n"),
			   OpenErrorStatus, SelectedMediumIndex, MediumArray,
			   MediumArraySize, MiniportAdapterHandle,
			   WrapperConfigurationContext));
	
	//
	// We only support a single instance of AsyncMac
	//
	if (v_GlobalAdapterCount != 0) {
		return NDIS_STATUS_FAILURE;
	}

	for (i = 0; TRUE; i++)
	{
		if (i >= MediumArraySize)
			return NDIS_STATUS_UNSUPPORTED_MEDIA;

		if (MediumArray[i] == NdisMediumWan)
		{
			*SelectedMediumIndex = i;
			break;
		}
	}

	//
	// Let's allocate an AsyncMac adapter structure.
    //
	pAdapter = AsyncMacAllocateMemory(sizeof(ASYNCMAC_ADAPTER));
    if (pAdapter == NULL)
	{
        return NDIS_STATUS_RESOURCES;
    }

	ASSERT(AsyncMacGuardRegionOk(pAdapter, sizeof(ASYNCMAC_ADAPTER)));

#ifdef DEBUG
	pAdapter->dwDebugSigStart = AA_SIG_START;
	pAdapter->dwDebugSigEnd = AA_SIG_END;
	DEBUGMSG (ZONE_ALLOC, (TEXT(" ASYNCMAC:MpInit: Allocated pAdapter 0x%X(%d)\r\n"),
						   pAdapter, sizeof(ASYNCMAC_ADAPTER)));
	
#endif
	pAdapter->hMiniportAdapter = MiniportAdapterHandle;

    //
    // Open the configuration space.
    //
    NdisOpenConfiguration(&Status, &ConfigHandle, WrapperConfigurationContext);

    if (Status != NDIS_STATUS_SUCCESS)
	{
        AsyncMacFreeMemory(pAdapter, sizeof(ASYNCMAC_ADAPTER));

        DEBUGMSG(ZONE_INIT,
            (TEXT("NE2000:Initialize: NdisOpenConfiguration failed 0x%x\n"),
            Status));
        return Status;
    }

	pAdapter->Info.MaxFrameSize = MAX_FRAME_SIZE;

    NdisReadConfiguration(&Status, &ReturnedValue, ConfigHandle, &MaxFrameSizeStr, NdisParameterInteger);

    if (Status == NDIS_STATUS_SUCCESS)
	{
		pAdapter->Info.MaxFrameSize = ReturnedValue->ParameterData.IntegerData;
		DEBUGMSG(ZONE_INIT,(TEXT("ASYNCMAC: MaxFrameSize=%d.\n"), pAdapter->Info.MaxFrameSize));
    }
	

	pAdapter->MaxSendFrameSize = pAdapter->Info.MaxFrameSize;

    NdisReadConfiguration(&Status, &ReturnedValue, ConfigHandle, &MaxSendFrameSizeStr, NdisParameterInteger);

    if (Status == NDIS_STATUS_SUCCESS)
	{
		pAdapter->MaxSendFrameSize = ReturnedValue->ParameterData.IntegerData;
		DEBUGMSG(ZONE_INIT,(TEXT("ASYNCMAC: MaxSendFrameSize=%d.\n"), pAdapter->MaxSendFrameSize));
    }

	pAdapter->MaxRecvFrameSize = pAdapter->Info.MaxFrameSize;

    NdisReadConfiguration(&Status, &ReturnedValue, ConfigHandle, &MaxRecvFrameSizeStr, NdisParameterInteger);

    if (Status == NDIS_STATUS_SUCCESS)
	{
		pAdapter->MaxRecvFrameSize = ReturnedValue->ParameterData.IntegerData;
		DEBUGMSG(ZONE_INIT,(TEXT("ASYNCMAC: MaxRecvFrameSize=%d.\n"), pAdapter->MaxRecvFrameSize));
    }

	pAdapter->dwRecvBufSize = DEFAULT_RX_BUF_SIZE;

    NdisReadConfiguration(&Status, &ReturnedValue, ConfigHandle, &RecvBufSizeStr, NdisParameterInteger);

    if (Status == NDIS_STATUS_SUCCESS)
	{
		pAdapter->dwRecvBufSize = ReturnedValue->ParameterData.IntegerData;
		DEBUGMSG(ZONE_INIT,(TEXT("ASYNCMAC: RecvBufferSize=%d.\n"), pAdapter->dwRecvBufSize));
    }

	pAdapter->dwRecvThreadPrio = DEFAULT_RX_THREAD_PRIORITY;

	NdisReadConfiguration(&Status, &ReturnedValue, ConfigHandle, &RecvThreadPrioStr, NdisParameterInteger);

    if (Status == NDIS_STATUS_SUCCESS)
	{
		pAdapter->dwRecvThreadPrio = ReturnedValue->ParameterData.IntegerData;
    }
	DEBUGMSG(ZONE_INIT,(TEXT("ASYNCMAC: RecvThreadPrio=%d.\n"), pAdapter->dwRecvThreadPrio));

	// Just close the config handle
	NdisCloseConfiguration (ConfigHandle);

	// Initialize our structure.
	pAdapter->Info.MaxTransmit = 2;

#define	ROUND_UP_TO_MULTIPLE_OF_N(value, N)	((value + N - 1) & ~(N - 1))

	// For more info on HeaderPadding and TailPadding sizes see AssemblePPPFrame.
	// HeaderPadding = 1 byte for opening flag (7e) + MaxFrameSize bytes to allow for insertion of escape bytes
	// TailPadding   = 4 bytes for escaped 16 bit CRC + 1 byte for closing flag
	//
	// The header padding must be rounded up because the PPP code that builds a packet expects that
	// PacketStartAddress + HeaderPadding will be DWORD aligned.
	pAdapter->Info.HeaderPadding = ROUND_UP_TO_MULTIPLE_OF_N(1 + pAdapter->Info.MaxFrameSize, 4);
	pAdapter->Info.TailPadding = 4 + 1;

	pAdapter->Info.Endpoints = 1;
	pAdapter->Info.MemoryFlags = 0;
//	pAdapter->Info.HighestAcceptableAddress = NDIS_PHYSICAL_ADDRESS_CONST(-1,-1);
	pAdapter->Info.FramingBits = PPP_FRAMING|SLIP_FRAMING;
	pAdapter->Info.DesiredACCM = DEFAULT_ACCM;
	
	// Tell NDIS about our handle
    NdisMSetAttributesEx(MiniportAdapterHandle, (NDIS_HANDLE)pAdapter, 1000,
						 0, NdisInterfaceInternal);
	
	
	// Initialize TAPI
#ifdef TODO
	// Once we change the load order so that miniports get loaded after the
	// system is initialized we can do the lineInitialize here.  In the meantime
	// we'll use a lame function to sleep for awhile until we think the system
	// might be happy.
	{
		long	lReturn;
		lReturn = lineInitialize (&(pAdapter->hLineApp),
								  v_hInstance, lineCallbackFunc, 
								  TEXT("ASYNCMAC"), &(pAdapter->dwNumDevs));
		DEBUGMSG (1, (TEXT("lineInitialize returned %d\r\n"),
					  lReturn));

		DEBUGMSG (1, (TEXT("lineInitialize say's there's %d devices\r\n"),
					  pAdapter->dwNumDevs));
	
	}
#else
	{
		NdisMInitializeTimer (&(pAdapter->ntLineInit),
							  pAdapter->hMiniportAdapter,
							  DoLineInitialize, pAdapter);
							  
							  
		NdisMSetTimer (&(pAdapter->ntLineInit), 1000);
					  
	}
#endif

	// Lot's more stuff.
	EnterCriticalSection(&v_AdapterCS);
	v_pAdapter = pAdapter;
	v_GlobalAdapterCount++;
	LeaveCriticalSection(&v_AdapterCS);

	ASSERT(AsyncMacGuardRegionOk(pAdapter, sizeof(ASYNCMAC_ADAPTER)));

	DEBUGMSG (ZONE_INIT|ZONE_INTERFACE, (TEXT("-ASYNCMAC:MpInit\r\n")));
	
    return NDIS_STATUS_SUCCESS;
}

NDIS_STATUS
MapTapiErrorToNdisStatus(
	IN	DWORD	dwTapiErrorCode)
//
//	Translate a TAPI error code to an NDIS status.
//
{
	NDIS_STATUS	NdisStatus;

	switch(dwTapiErrorCode)
	{
	case 0:
		NdisStatus = NDIS_STATUS_SUCCESS;
		break;

	case LINEERR_BADDEVICEID:
	case LINEERR_INVALADDRESS:
	case LINEERR_INVALAPPHANDLE:
	case LINEERR_INVALPARAM:
	case LINEERR_INVALPOINTER:
	case LINEERR_INVALDEVICECLASS:
	case LINEERR_STRUCTURETOOSMALL:
		NdisStatus = NDIS_STATUS_TAPI_INVALPARAM;
		break;

	case LINEERR_CALLUNAVAIL:
		NdisStatus = NDIS_STATUS_TAPI_CALLUNAVAIL;
		break;

	case LINEERR_INCOMPATIBLEEXTVERSION:
		NdisStatus = NDIS_STATUS_TAPI_INCOMPATIBLEEXTVERSION;
		break;

	case LINEERR_INVALLINESTATE:
		NdisStatus = NDIS_STATUS_TAPI_INVALLINESTATE;
		break;

	case LINEERR_INVALCARD:
	case LINEERR_NODEVICE:
	case LINEERR_UNINITIALIZED:
		NdisStatus = NDIS_STATUS_TAPI_NODEVICE;
		break;

	case LINEERR_NODRIVER:
		NdisStatus = NDIS_STATUS_TAPI_NODRIVER;
		break;

	case LINEERR_NOMEM:
		NdisStatus = NDIS_STATUS_RESOURCES;
		break;

	case LINEERR_OPERATIONUNAVAIL:
		NdisStatus = NDIS_STATUS_TAPI_OPERATIONUNAVAIL;
		break;

	case LINEERR_RESOURCEUNAVAIL:
		NdisStatus = NDIS_STATUS_TAPI_RESOURCEUNAVAIL;
		break;

	case LINEERR_INCOMPATIBLEAPIVERSION:
	case LINEERR_OPERATIONFAILED:
		NdisStatus = NDIS_STATUS_FAILURE;
		break;

	default:
		//
		//	All TAPI codes should be covered explicitly, if
		//	they are not we can catch them with the assert and
		//	add them.
		//
		ASSERT(FALSE);
		NdisStatus = NDIS_STATUS_FAILURE;
		break;

	}

	return NdisStatus;
}


DWORD WINAPI
LineConfigDialogEditThread(
	LPVOID pVArg)
{
	PNDIS_TAPI_LINE_CONFIG_DIALOG_EDIT pConfigDlgEdit = (PNDIS_TAPI_LINE_CONFIG_DIALOG_EDIT)pVArg;
	long lResult;
	LPTSTR	szDeviceClass;

	//
	//	In case any of the data is on the application stack or heap...
	//
	SetProcPermissions(-1);

	if (pConfigDlgEdit->ulDeviceClassLen) {
		szDeviceClass = (LPTSTR)pConfigDlgEdit->DataBuf;
	} else {
		szDeviceClass = NULL;
	}

	lResult = lineConfigDialogEdit (pConfigDlgEdit->ulDeviceID,
									pConfigDlgEdit->hwndOwner,
									szDeviceClass,
									pConfigDlgEdit->DataBuf + pConfigDlgEdit->ulConfigInOffset,
									pConfigDlgEdit->ulConfigInSize,
									(LPVARSTRING)(pConfigDlgEdit->DataBuf + pConfigDlgEdit->ulConfigOutOffset));

	return (DWORD)lResult;
}

NDIS_STATUS
MpQueryInfo(
	IN	NDIS_HANDLE	MiniportAdapterContext,
	IN	NDIS_OID	Oid,
	IN	PVOID		InformationBuffer,
	IN	ULONG		InformationBufferLength,
	OUT PULONG		BytesWritten,
	OUT PULONG		BytesNeeded
	)
/*++

Routine Description:

    The MpQueryProtocolInformation process a Query request for
    NDIS_OIDs that are specific to a binding about the MAC.  Note that
    some of the OIDs that are specific to bindings are also queryable
    on a global basis.  Rather than recreate this code to handle the
    global queries, I use a flag to indicate if this is a query for the
    global data or the binding specific data.

Arguments:

    Adapter - a pointer to the adapter.

    Oid - the NDIS_OID to process.

Return Value:

    The function value is the status of the operation.

--*/

{
    NDIS_MEDIUM             Medium          = NdisMediumWan;
	PASYNCMAC_ADAPTER		pAdapter = (PASYNCMAC_ADAPTER)MiniportAdapterContext;
    NDIS_STATUS             StatusToReturn  = NDIS_STATUS_SUCCESS;
    NDIS_HARDWARE_STATUS    HardwareStatus  = NdisHardwareStatusReady;
    PVOID                   MoveSource;
    ULONG                   MoveBytes;
    ULONG                   GenericULong    = 0;
    USHORT                  GenericUShort   = 0;
    INT                     fDoCommonMove = TRUE;
    UCHAR					WanAddress[6] = {' ','A','S','Y','N',0xFF};  // This is the address returned by OID_WAN_*_ADDRESS.
	
	DEBUGMSG (ZONE_INIT|ZONE_INTERFACE,
			  (TEXT("+ASYNCMAC:MpQueryInfo(0x%X, 0x%X(%hs), 0x%X, %d, 0x%X, 0x%X)\r\n"),
			   MiniportAdapterContext, Oid, GetOidString(Oid),
			   InformationBuffer, InformationBufferLength,
			   BytesWritten, BytesNeeded));

	ASSERT(CHK_AA(pAdapter));
	
    MoveSource = &GenericULong;
    MoveBytes  = sizeof(GenericULong);
	
	switch ( Oid ) {
	case OID_GEN_SUPPORTED_LIST:
		MoveSource = (PVOID) SupportedOids;
		MoveBytes = sizeof(SupportedOids);
		break;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av在线一区二区| 色综合久久88色综合天天免费| 中文字幕一区在线观看视频| 欧美精选在线播放| 99精品欧美一区二区蜜桃免费 | 丝袜美腿亚洲色图| 亚洲私人黄色宅男| 国产日本一区二区| 欧美xxx久久| 91精品久久久久久蜜臀| 91免费视频观看| 成人午夜在线视频| 久久电影国产免费久久电影| 天堂蜜桃一区二区三区 | 亚洲同性同志一二三专区| 精品第一国产综合精品aⅴ| 欧美日韩在线综合| 91免费国产在线| 成人app网站| 成人va在线观看| 成人综合婷婷国产精品久久蜜臀| 蜜臀va亚洲va欧美va天堂 | xnxx国产精品| 日韩一区二区免费高清| 777a∨成人精品桃花网| 91黄色免费观看| 色综合久久综合| 色综合久久中文综合久久牛| 91一区二区在线观看| 成人一区二区三区在线观看 | 99久久精品国产精品久久| 从欧美一区二区三区| 国产91高潮流白浆在线麻豆| 国产成人免费在线观看| 国产成人综合在线播放| 国产91对白在线观看九色| 国产成人精品1024| 粉嫩蜜臀av国产精品网站| 岛国精品在线观看| 不卡一区在线观看| 色综合天天天天做夜夜夜夜做| voyeur盗摄精品| 91免费版在线| 在线一区二区三区| 欧美日韩国产综合视频在线观看 | 欧美人狂配大交3d怪物一区| 欧美日韩另类国产亚洲欧美一级| 欧美午夜免费电影| 欧美三级蜜桃2在线观看| 欧美日韩高清一区二区三区| 欧美剧在线免费观看网站| 91精品国产综合久久精品性色| 欧美一区二区视频在线观看2020 | 精品国产青草久久久久福利| 欧美tickling网站挠脚心| 国产亚洲成aⅴ人片在线观看| 亚洲国产精品精华液ab| 日韩理论片一区二区| 亚洲国产成人91porn| 青青草国产精品亚洲专区无| 国内成人精品2018免费看| 成人毛片在线观看| 欧美日韩卡一卡二| 亚洲精品一区在线观看| 国产精品久久久久久久第一福利| 亚洲一区二区三区不卡国产欧美 | 99久久精品国产麻豆演员表| 欧美影院精品一区| 欧美成人乱码一区二区三区| 国产亚洲一区二区三区四区 | 91久久精品国产91性色tv| 91精品国产综合久久精品app| 26uuu另类欧美| 伊人色综合久久天天人手人婷| 日韩av中文在线观看| 大陆成人av片| 在线综合视频播放| 中日韩免费视频中文字幕| 亚洲综合一区二区三区| 国产一区二区三区美女| 色94色欧美sute亚洲线路一ni | 91精品国产色综合久久久蜜香臀| 久久久久久久综合| 亚洲国产精品一区二区www| 经典三级视频一区| 欧美吞精做爰啪啪高潮| 欧美激情在线观看视频免费| 婷婷亚洲久悠悠色悠在线播放| 国产激情精品久久久第一区二区 | 久久精品夜夜夜夜久久| 性欧美大战久久久久久久久| 国产东北露脸精品视频| 欧美日韩国产高清一区二区| 欧美—级在线免费片| 麻豆一区二区99久久久久| 97精品电影院| 久久蜜臀精品av| 天天综合天天做天天综合| 99在线精品一区二区三区| 欧美mv和日韩mv国产网站| 午夜精品一区二区三区免费视频 | 91精品蜜臀在线一区尤物| 亚洲视频一区二区在线| 国产高清成人在线| 日韩一区二区精品在线观看| 亚洲国产综合人成综合网站| 成人免费高清视频在线观看| 日韩欧美二区三区| 午夜精品久久久久| 91免费小视频| 亚洲欧洲www| 成人国产视频在线观看| 精品国产乱码久久久久久夜甘婷婷 | 日韩色在线观看| 亚洲永久精品大片| 91小宝寻花一区二区三区| 久久免费精品国产久精品久久久久| 日韩中文字幕不卡| 欧美日韩精品免费观看视频| 一级女性全黄久久生活片免费| 99在线热播精品免费| 国产精品丝袜久久久久久app| 激情亚洲综合在线| www国产亚洲精品久久麻豆| 日韩电影一区二区三区| 欧美人伦禁忌dvd放荡欲情| 亚洲一区二区三区美女| 欧美性受xxxx黑人xyx| 亚洲一区二区免费视频| 欧美在线一二三| 亚洲成人午夜影院| 欧美二区在线观看| 男女激情视频一区| 精品日韩一区二区三区免费视频| 捆绑调教一区二区三区| 日韩亚洲欧美一区二区三区| 蜜桃av噜噜一区二区三区小说| 91精品国产免费久久综合| 麻豆精品国产传媒mv男同| 欧美不卡一区二区三区四区| 精一区二区三区| 久久婷婷成人综合色| 国产剧情一区二区| 国产精品福利电影一区二区三区四区| 成人av在线看| 一区二区三区成人| 欧美片在线播放| 日本v片在线高清不卡在线观看| 日韩三级伦理片妻子的秘密按摩| 国产做a爰片久久毛片| 国产欧美日韩在线| 91麻豆自制传媒国产之光| 亚洲国产另类av| 精品女同一区二区| 成人午夜视频福利| 中文字幕中文在线不卡住| 欧美少妇一区二区| 激情深爱一区二区| 中文字幕日本不卡| 欧美久久婷婷综合色| 国产乱理伦片在线观看夜一区| 国产精品国产三级国产普通话三级| 91在线精品一区二区三区| 亚洲v日本v欧美v久久精品| 欧美成人a视频| 99久久99久久免费精品蜜臀| 亚洲成人免费影院| 久久先锋资源网| 94-欧美-setu| 日本特黄久久久高潮| 国产目拍亚洲精品99久久精品| 色狠狠色狠狠综合| 理论电影国产精品| 一区在线中文字幕| 欧美一区二区在线免费观看| 成人午夜视频福利| 日本不卡不码高清免费观看| 国产女人水真多18毛片18精品视频| 91精品福利视频| 国产精品一区二区久久不卡| 亚洲一区在线免费观看| 久久久久久电影| 欧美精品九九99久久| 国产69精品一区二区亚洲孕妇| 亚洲不卡一区二区三区| 中文字幕第一区| 欧美一区二区三区在线视频| 91色porny蝌蚪| 激情五月激情综合网| 亚洲成av人片在www色猫咪| 国产欧美1区2区3区| 日韩午夜在线观看| 色婷婷av一区| 成人手机在线视频| 另类小说色综合网站| 亚洲一二三级电影| 国产精品久久影院| 2欧美一区二区三区在线观看视频| 色综合久久久久综合体桃花网| 国产精品一二三区|