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

📄 tdriver.h

📁 基于内核驱动的IP包过滤程序示例代码(一). 该代码是个测试程序,调用驱动实现包过滤. 驱动源码将在下期上载.
💻 H
字号:

#if !defined(TDRIVER_CLASS)
#define TDRIVER_CLASS

#pragma once

#include "winsvc.h"


//ERROR CODES
#define DRV_SUCCESS						 (DWORD)0		//ALL OK

#define DRV_ERROR_SCM					 (DWORD)-1		//ERROR at Open de Service Manager
#define DRV_ERROR_SERVICE				 (DWORD)-2		//ERROR at create service
#define DRV_ERROR_MEMORY				 (DWORD)-3		//ERROR	at reserving memory
#define DRV_ERROR_INVALID_PATH_OR_FILE	 (DWORD)-4		//ERROR, the path gived is not valid
#define DRV_ERROR_INVALID_HANDLE		 (DWORD)-5		//ERROR, driver handle is not valid
#define DRV_ERROR_STARTING				 (DWORD)-6		//ERROR at starting the driver
#define DRV_ERROR_STOPPING				 (DWORD)-7		//ERROR at stopping the driver
#define DRV_ERROR_REMOVING				 (DWORD)-8		//ERROR at removing the driver "service"
#define DRV_ERROR_IO					 (DWORD)-9		//ERROR at io operation
#define DRV_ERROR_NO_INITIALIZED		 (DWORD)-10		//ERROR, class not initialized
#define DRV_ERROR_ALREADY_INITIALIZED	 (DWORD)-11		//ERROR, class already initialized
#define DRV_ERROR_NULL_POINTER			 (DWORD)-12		//ERROR, pointer introduced is NULL
#define DRV_ERROR_UNKNOWN				 (DWORD)-13		//UNKNOWN ERROR



class TDriver
{
public:
	TDriver(void);		//constructor
	~TDriver(void);		//destructor

	//functions to initialized the driver variables
	DWORD InitDriver(LPCTSTR name, LPCTSTR path, LPCTSTR dosName=NULL);
	DWORD InitDriver(LPCTSTR path);


	//functions to load and unload drivers. If start = TRUE, the driver will be started.
	DWORD LoadDriver(BOOL start = TRUE);
	DWORD LoadDriver(LPCTSTR name, LPCTSTR path, LPCTSTR dosName=NULL, BOOL start=TRUE);
	DWORD LoadDriver(LPCTSTR path, BOOL start=TRUE);

	//if forceClearData == TRUE, will remove variables although we cant remove driver "service"
	DWORD UnloadDriver(BOOL forceClearData = FALSE);
	
	//functions to start and stop, driver "service"
	DWORD StartDriver(void);
	DWORD StopDriver(void);

	//if true, the driver havent been removed at finish
	void SetRemovable(BOOL value);


	//funtion to return class status
	BOOL IsInitialized();
	BOOL IsStarted();
	BOOL IsLoaded();


	//function to get driver handle
	HANDLE GetDriverHandle(void);

	//funtions to make IO operation with driver
	DWORD WriteIo(DWORD code, PVOID buffer, DWORD count);
	DWORD ReadIo(DWORD code, PVOID buffer, DWORD count);
	DWORD RawIo(DWORD code, PVOID inBuffer, DWORD inCount, PVOID outBuffer, DWORD outCount);
	
private:
	HANDLE driverHandle;	//driver handle
	
	LPTSTR driverName;		//driver name
	LPTSTR driverPath;		//driver disk path
	LPTSTR driverDosName;	//driver's dos name, to link with it

	BOOL initialized;	//variables to store the status of this class
	BOOL started;
	BOOL loaded;
	BOOL removable;

	//get a handle to the driver
	DWORD OpenDevice(void);	
};

#endif

⌨️ 快捷键说明

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