TDriver.h
上传用户:wlquartz
上传日期:2022-03-04
资源大小:89k
文件大小:3k
开发平台:

Visual C++

  1. #if !defined(TDRIVER_CLASS)
  2. #define TDRIVER_CLASS
  3. #pragma once
  4. #include "winsvc.h"
  5. //ERROR CODES
  6. #define DRV_SUCCESS  (DWORD)0 // Todo bien
  7. #define DRV_ERROR_SCM  (DWORD)-1 // ERROR al abrir el service manager
  8. #define DRV_ERROR_SERVICE  (DWORD)-2 // ERROR al crear el servicio
  9. #define DRV_ERROR_MEMORY  (DWORD)-3 // ERROR al reservar memoria
  10. #define DRV_ERROR_INVALID_PATH_OR_FILE  (DWORD)-4 // ERROR, Path no valido
  11. #define DRV_ERROR_INVALID_HANDLE  (DWORD)-5 // ERROR, driver handle no valido
  12. #define DRV_ERROR_STARTING  (DWORD)-6 // ERROR al poner en Start el driver
  13. #define DRV_ERROR_STOPPING  (DWORD)-7 // ERROR al parar el driver
  14. #define DRV_ERROR_REMOVING  (DWORD)-8 // ERROR eliminando el "servicio"
  15. #define DRV_ERROR_IO  (DWORD)-9 // ERROR en operacion de E/S
  16. #define DRV_ERROR_NO_INITIALIZED  (DWORD)-10 // ERROR, clase no inicializada
  17. #define DRV_ERROR_ALREADY_INITIALIZED  (DWORD)-11 // ERROR, clase ya inicializada
  18. #define DRV_ERROR_NULL_POINTER  (DWORD)-12 // ERROR, puntero a null como parametro
  19. #define DRV_ERROR_UNKNOWN  (DWORD)-13 // ERROR desconocido
  20. class TDriver
  21. {
  22. public:
  23. TDriver(void); //constructor
  24. ~TDriver(void); //destructor
  25. // Funciones para inicializar las variables del driver
  26. DWORD InitDriver(LPCTSTR name, LPCTSTR path, LPCTSTR dosName=NULL);
  27. DWORD InitDriver(LPCTSTR path);
  28. // Funciones para carga/descarga del driver. Si start = TRUE, el driver sera puesto en estado Start.
  29. DWORD LoadDriver(BOOL start = TRUE);
  30. DWORD LoadDriver(LPCTSTR name, LPCTSTR path, LPCTSTR dosName=NULL, BOOL start=TRUE);
  31. DWORD LoadDriver(LPCTSTR path, BOOL start=TRUE);
  32. // Si forceClearData == TRUE, las variables seran eliminadas aunque no podamos eliminar el servicio
  33. DWORD UnloadDriver(BOOL forceClearData = FALSE);
  34. // Funciones parar comenzar/Parar el servicio
  35. DWORD StartDriver(void);
  36. DWORD StopDriver(void);
  37. // Si vale TRUE, el driver sera eliminado en el destructor
  38. void SetRemovable(BOOL value);
  39. // Informacion de estado del driver
  40. BOOL IsInitialized();
  41. BOOL IsStarted();
  42. BOOL IsLoaded();
  43. // Funcion para obtener un handle al driver
  44. HANDLE GetDriverHandle(void);
  45. // Funciones para realizar operaciones de E/S con el driver
  46. DWORD WriteIo(DWORD code, PVOID buffer, DWORD count);
  47. DWORD ReadIo(DWORD code, PVOID buffer, DWORD count);
  48. DWORD RawIo(DWORD code, PVOID inBuffer, DWORD inCount, PVOID outBuffer, DWORD outCount);
  49. private:
  50. HANDLE driverHandle; // driver handle
  51. LPTSTR driverName; // Nombre del driver
  52. LPTSTR driverPath; // Path del driver
  53. LPTSTR driverDosName; // Nombre DOS del driver
  54. BOOL initialized; // Variables donde almacenar el estado del driver
  55. BOOL started;
  56. BOOL loaded;
  57. BOOL removable;
  58. DWORD OpenDevice(void); // Obtiene un handle al driver
  59. };
  60. #endif