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

📄 zpimobject.cpp

📁 用Delphi实现的防火墙,可实现象天网一样的功能.
💻 CPP
字号:
// ZPIMObject.cpp: implementation of the ZPIMObject class.
//
//////////////////////////////////////////////////////////////////////

//#include <afx.h>
#include <afxwin.h>         // MFC core and standard components
#include <process.h>
#include "stdafx.h"
#include <stdlib.h>
#include <malloc.h>
#include "ZPIMObject.h"
#include <Winsock2.h>
#define _WINSOCKAPI_
#include "DDKLBLInc.h"
#include <stdio.h>

#include "ip.h"
#include "fw_interface.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

ZPIMObject::ZPIMObject()
{
   m_hPIM = INVALID_HANDLE_VALUE;
   OpenPIM();
}

ZPIMObject::~ZPIMObject()
{
   ClosePIM();
}

BOOLEAN ZPIMObject::OpenPIM()
{
   BOOLEAN  bResult = FALSE;

   //
   // Get Handle To PIM Driver
   //
   m_hPIM = CreateFile(
               DOGFW_DEVICE_NAME,   // e.g., "\\\\.\\DRIVERNAME.VXD"
               GENERIC_READ | GENERIC_WRITE,
               0,
               0,
               CREATE_NEW,
               FILE_ATTRIBUTE_NORMAL,
               0
               );

   return( m_hPIM != INVALID_HANDLE_VALUE );
}

void ZPIMObject::ClosePIM()
{
   //
   // Close The PIM Handle, If Necessary
   //
   if( m_hPIM != INVALID_HANDLE_VALUE )
   {
      CloseHandle( m_hPIM );
   }

   m_hPIM = INVALID_HANDLE_VALUE;
}

DWORD ZPIMObject::SetFwStatus(BYTE *pStatus)
{
   BOOLEAN  bIOResult;
   DWORD    cbBytesRet, nResult = ERROR_SUCCESS;

   //
   // Open The NDC PIM Driver, If Necessary
   //
   if( m_hPIM == INVALID_HANDLE_VALUE )
   {
      OpenPIM();
   }

   if( m_hPIM == INVALID_HANDLE_VALUE )
   {
      // ATTENTION!!! Display Message!!!

      return( GetLastError() );
   }

   //
   // Call The Driver To Read Current NDC Settings
   //

   bIOResult = DeviceIoControl(
                  m_hPIM,
                  IOCTL_DOGFW_CTL_FW_STATUS,
                  pStatus,
                  sizeof(*pStatus),
                  NULL,
                  sizeof(*pStatus),
                  &cbBytesRet,   // Bytes Returned
                  NULL           // lpOverlapped
                  );

   if( !bIOResult )
   {
   }

   return( nResult);
}


DWORD ZPIMObject::SetFwMode(BYTE *pMode)
{
   BOOLEAN  bIOResult;
   DWORD    cbBytesRet, nResult = ERROR_SUCCESS;

   //
   // Open The NDC PIM Driver, If Necessary
   //
   if( m_hPIM == INVALID_HANDLE_VALUE )
   {
      OpenPIM();
   }

   if( m_hPIM == INVALID_HANDLE_VALUE )
   {
      // ATTENTION!!! Display Message!!!

      return( GetLastError() );
   }

   //
   // Call The Driver To Read Current NDC Settings
   //

   bIOResult = DeviceIoControl(
                  m_hPIM,
                  IOCTL_DOGFW_CTL_FWMODE,
                  pMode,
                  sizeof(*pMode),
                  NULL,
                  sizeof(*pMode),
                  &cbBytesRet,   // Bytes Returned
                  NULL           // lpOverlapped
                  );

   if( !bIOResult )
   {
   }

   return( nResult );
}



DWORD ZPIMObject::AddCheckData(Interface_Keyword *pData)
{
   BOOLEAN  bIOResult;
   DWORD    cbBytesRet, nResult = ERROR_SUCCESS;

   //
   // Open The NDC PIM Driver, If Necessary
   //
   if( m_hPIM == INVALID_HANDLE_VALUE )
   {
      OpenPIM();
   }

   if( m_hPIM == INVALID_HANDLE_VALUE )
   {
      // ATTENTION!!! Display Message!!!

      return( GetLastError() );
   }

   //
   // Call The Driver To Read Current NDC Settings
   //

   bIOResult = DeviceIoControl(
                  m_hPIM,
                  IOCTL_DOGFW_CTL_CHKDATA,
                  pData,
                  sizeof(*pData)+pData->len,
                  NULL,
                  sizeof(*pData)+pData->len,
                  &cbBytesRet,   // Bytes Returned
                  NULL           // lpOverlapped
                  );

   if( !bIOResult )
   {
   }

   return( nResult );
}

DWORD ZPIMObject::CleanCheckData()
{
   BOOLEAN  bIOResult;
   DWORD    cbBytesRet, nResult = ERROR_SUCCESS;
   if( m_hPIM == INVALID_HANDLE_VALUE )
   {
      OpenPIM();
   }

   if( m_hPIM == INVALID_HANDLE_VALUE )
   {
      // ATTENTION!!! Display Message!!!

      return( GetLastError() );
   }

   //
   // Call The Driver To Read Current NDC Settings
   //

   bIOResult = DeviceIoControl(
                  m_hPIM,
                  IOCTL_DOGFW_CTL_DELCHKDATA,
                  NULL,
                  0,
                  NULL,
                  0,
                  &cbBytesRet,   // Bytes Returned
                  NULL           // lpOverlapped
                  );

   if( !bIOResult )
   {
   }

   return( nResult );
}

⌨️ 快捷键说明

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