htscpp_internal.h
上传用户:nnxzhh
上传日期:2007-01-11
资源大小:742k
文件大小:3k
开发平台:

WINDOWS

  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/cpplib/htscpp_internal.h 6     1/01/00 11:00p Markr $ 
  35. //
  36. ///////////////////////////////////////////////////////////////////////////////
  37. #pragma once
  38. #include "htscpp.h"
  39. /*
  40.  * pointers to initialization sections
  41.  */
  42. extern "C" {
  43.     PVFV __crtXia[];
  44.     PVFV __crtXiz[];
  45.     PVFV __crtXca[]; // c++
  46.     PVFV __crtXcz[];
  47.     PVFV __crtXpa[];
  48.     PVFV __crtXpz[];
  49.     PVFV __crtXta[];
  50.     PVFV __crtXtz[];
  51. }
  52. __inline void HtsBugCheckEx(PCHAR Message, ULONG FileId, BOOLEAN Internal)
  53. {
  54.     DbgPrint("******************************************************n");
  55.     //
  56.     // Indicate if this is an INTERNAL problem, or a problem with the FSD
  57.     //
  58.     if (Internal) {
  59.         DbgPrint("********** INTERNAL ASSERTION FAILURE ********n");
  60.     } else {
  61.         DbgPrint("********** ASSERTION FAILURE  ********n");
  62.     }
  63.     //
  64.     // Print the message passed in to us.
  65.     //
  66.     DbgPrint("** %s **n", Message);
  67.     DbgPrint("********** Driver WILL NOW BUG CHECK ****************n");
  68.     KeBugCheckEx(FILE_SYSTEM, FileId, Internal,
  69.         // if possible include the threadid
  70.         KeGetCurrentIrql() <= DISPATCH_LEVEL ? (ULONG) PsGetCurrentThread(): 0, 
  71.         // Might as well toss in the current irql
  72.         KeGetCurrentIrql());
  73. }
  74. #ifndef HTS_UNIQUE_FILE_ID
  75. #error "source file must define HTS_UNIQUE_FILE_ID"
  76. #endif
  77. #define HtsFileId() HTS_UNIQUE_FILE_ID
  78. #define stringer(x) #x
  79. #define AssertAlways(x) if (!(x)) { 
  80.     HtsBugCheckEx("Internal Assertion Failure (" #x ") in " __FILE__ " at " stringer(__LINE__),  HtsFileId(), TRUE); 
  81. }
  82. ///////////////////////////////////////////////////////////////////////////////
  83. // 
  84. // Change History Log
  85. //
  86. // $Log: /cpprun/sys/cpplib/htscpp_internal.h $
  87. // 
  88. // 6     1/01/00 11:00p Markr
  89. // 
  90. // 5     12/17/99 8:30a Markr
  91. // 
  92. // 4     12/16/99 10:20p Markr
  93. //
  94. ///////////////////////////////////////////////////////////////////////////////