请各位老师指点此段代码,在线
#include "xprecomp.h"
#include "..\common\filt.h"
#pragma hdrstop
PXACL_HEADER m_pAclHeader = 0;
BOOL m_IsFilter = FALSE;
int m_PageSize = 0;
void SetFilterMode(BOOL IsFilter)
{
//
// 2002/05/24 add
//
if(!IsFilter)
{
if(RefenceAclCount())
{
m_pAclHeader->bWorkMode = XF_PASS_ALL;
DerefenceAclCount();
}
}
m_IsFilter = IsFilter;
}void* GetBuffer()
{
return m_pAclHeader;
}
void* CreateMemory(int nPageSize)
{
static void* pBuffer;
if(m_pAclHeader != 0 && nPageSize == m_PageSize)
return m_pAclHeader;
m_pAclHeader = 0;
pBuffer = malloc(nPageSize);
m_PageSize = nPageSize;
m_pAclHeader = (PXACL_HEADER)pBuffer;
return pBuffer;
}
int FreeMemory()
{
if(m_pAclHeader == 0) return 0;
free(m_pAclHeader);
m_pAclHeader = 0;
m_PageSize = 0;
return 1;
}
BOOL RefenceAclCount()
{
if(!m_IsFilter || m_pAclHeader == NULL)
return FALSE;
if(m_pAclHeader->wPv == PV_LOCKED)
return FALSE;
m_pAclHeader->wRefenceCount++;
dprintf("RefenceAclCount: %d\n", m_pAclHeader->wRefenceCount);
return TRUE;
}