⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 line.cpp

📁 pppoe client
💻 CPP
字号:

//********************************************************************
//	日期:	2004/08/16 - 16:8:2004   0:18
//	名前:	tiamo
//	描述:	line
//*********************************************************************

#include "Stdafx.h"

// reference line
VOID ReferenceLine(PLINE_INFO pLine,BOOLEAN bAcquireLock)
{
	if(bAcquireLock)
		NdisAcquireSpinLock(&pLine->m_lockSelf);

	pLine->m_lRefCount ++;

	if(bAcquireLock)
		NdisReleaseSpinLock(&pLine->m_lockSelf);
}

// dereference line
VOID DereferenceLine(PLINE_INFO pLine)
{
	NdisAcquireSpinLock(&pLine->m_lockSelf);

	LONG lCount = --pLine->m_lRefCount;

	if(!lCount)
	{
		pLine->m_ulFlags &= ~(LINE_INITIALIZED | LINE_CLOSING);
		pLine->m_ulFlags |= LINE_FREEING;
	}

	NdisReleaseSpinLock(&pLine->m_lockSelf);

	if(!lCount)
	{
		TspiCloseLineComplete(pLine);
	}
}

// tspi close line complete
VOID TspiCloseLineComplete(PLINE_INFO pLine)
{
	NdisAcquireSpinLock(&g_pAdapter->m_lockSelf);

	g_pAdapter->m_ulTotalLines --;

	NdisReleaseSpinLock(&g_pAdapter->m_lockSelf);

	if(pLine->m_ulFlags & LINE_CLOSE_RETURN_PENDING)
		NdisMSetInformationComplete(g_pAdapter->m_hMiniportAdapter,NDIS_STATUS_SUCCESS);

	NdisFreeMemory(pLine,sizeof(LINE_INFO),0);

	DereferenceTspiProvider(g_pAdapter);
}

// get hd line
HDRV_LINE GetHdLineFromDeviceId(PADAPTER pAdapter,ULONG ulDeviceId)
{
	if(PROVIDER_IN_WRONG_STATE(pAdapter))
		return static_cast<HDRV_LINE>(-1);

	HDRV_LINE hRet = ulDeviceId - pAdapter->m_ulDeviceIdBase;

	if(hRet < pAdapter->m_ulNumLineDevs)
		return hRet;

	return static_cast<HDRV_LINE>(-1);
}

// get line info
PLINE_INFO GetLinePtrFromHdLineCheckWorking(PADAPTER pAdapter,HDRV_LINE hdLine)
{
	if(PROVIDER_IN_WRONG_STATE(pAdapter))
		return NULL;

	if(hdLine < pAdapter->m_ulNumLineDevs)
		return pAdapter->m_pLinePtrArray[hdLine];
	
	return NULL;
}

PLINE_INFO GetLinePtrFromHdLineCheckInitOnly(PADAPTER pAdapter,HDRV_LINE hdLine)
{
	if((pAdapter->m_ulProviderFlags & PROVIDER_INITIALIZED) && hdLine < pAdapter->m_ulNumLineDevs)
		return pAdapter->m_pLinePtrArray[hdLine];

	return NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -