testDrv.cpp
上传用户:ykzxjx
上传日期:2022-04-03
资源大小:1175k
文件大小:4k
开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (C) 1999 - 2000 Mark Roddy
  4. //
  5. // Hollis Technology Solutions
  6. // 94 Dow Road
  7. // Hollis, NH 03049
  8. // info@hollistech.com
  9. // www.hollistech.com
  10. //
  11. // This library is free software; you can redistribute it and/or
  12. // modify it under the terms of the GNU Lesser General Public
  13. // License as published by the Free Software Foundation; either
  14. // version 2 of the License, or (at your option) any later version.
  15. //
  16. // This library is distributed in the hope that it will be useful,
  17. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  19. // Lesser General Public License for more details.
  20. //
  21. // You should have received a copy of the GNU Lesser General Public
  22. // License along with this library; if not, write to the Free Software
  23. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  24. //
  25. // www.fsf.org
  26. //
  27. //
  28. //
  29. // Synopsis: 
  30. // 
  31. //
  32. // Version Information:
  33. //
  34. // $Header: /cpprun/sys/testDrv/testDrv.cpp 2     1/01/00 11:00p Markr $ 
  35. //
  36. ///////////////////////////////////////////////////////////////////////////////
  37. #include "htscpp.h"
  38. CPP_DRIVER_ENTRY(PDRIVER_OBJECT DriverObject,
  39.                  PUNICODE_STRING RegistryPath);
  40. enum baseType { BIRD, PLANE, SUPERMAN };
  41. class base {
  42. public:
  43.     base();
  44.     virtual ~base();
  45.     virtual baseType isa()=0;
  46. };
  47. class global : public base {
  48. public:
  49.     global(int x);
  50.     global();
  51.     virtual ~global();
  52.     int getX();
  53.     virtual baseType isa();
  54. private:
  55.     int m_x;
  56. };
  57. base::base() 
  58. {
  59. #if DBG
  60.     DbgPrint("base: this %xn", this);
  61. #endif
  62. }
  63. base::~base()
  64. {
  65. #if DBG
  66.     DbgPrint("~base: this %xn", this);
  67. #endif
  68. }
  69. global::global(int x)
  70. {
  71. #if DBG
  72.     DbgPrint("global( %x): this %xn", x, this);
  73. #endif    
  74.     m_x = x;
  75. }
  76. global::global()
  77. {
  78. #if DBG
  79.     DbgPrint("global: this %xn", this);
  80. #endif    
  81.     m_x = 0;
  82. }
  83. global::~global()
  84. {
  85. #if DBG
  86.     DbgPrint("~global: this %xn", this);
  87. #endif    
  88.     m_x = 0;
  89. }
  90. int global::getX()
  91. {
  92. #if DBG
  93.     DbgPrint("global::getX m_x %x this %xn", m_x, this);
  94. #endif    
  95.     return m_x;
  96. }
  97. baseType global::isa()
  98. {
  99. #if DBG
  100.     DbgPrint("global::isa this %xn", this);
  101. #endif    
  102.     return BIRD;
  103. }
  104. global one(2);
  105. global two;
  106. global other(3);
  107. extern "C" void
  108. testUnload(PDRIVER_OBJECT DriverObject);
  109. CPP_DRIVER_ENTRY(PDRIVER_OBJECT DriverObject,
  110.                  PUNICODE_STRING RegistryPath)
  111. {
  112. #if DBG
  113.     DbgPrint("CPP_DRIVER_ENTRYn");
  114. #endif
  115.     DriverObject->DriverUnload = testUnload;
  116.     if (one.getX() != 2) {
  117.         return STATUS_UNSUCCESSFUL;
  118.     }
  119.      if (two.getX() != 0) {
  120.         return STATUS_UNSUCCESSFUL;
  121.     }
  122.     global * three = new('vrdT') global(4); // this is not global!
  123.     if (!three) {
  124.         //
  125.         // allocation failure!
  126.         //
  127.         return STATUS_UNSUCCESSFUL;
  128.     }
  129.     if (other.getX() != 3) {
  130.         return STATUS_UNSUCCESSFUL;
  131.     }
  132.     global four(4444);
  133.     if (four.getX() != 4444) {
  134.         delete three;
  135.         return STATUS_UNSUCCESSFUL;
  136.     }
  137.     delete three;
  138.     return STATUS_SUCCESS;
  139. }
  140. void
  141. testUnload(PDRIVER_OBJECT DriverObject)
  142. {
  143. #if DBG
  144.     DbgPrint("testUnloadn");
  145. #endif
  146.     return;
  147. }
  148. ///////////////////////////////////////////////////////////////////////////////
  149. // 
  150. // Change History Log
  151. //
  152. // $Log: /cpprun/sys/testDrv/testDrv.cpp $
  153. // 
  154. // 2     1/01/00 11:00p Markr
  155. // 
  156. // 1     12/17/99 8:14a Markr
  157. //
  158. ///////////////////////////////////////////////////////////////////////////////