Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

139 lines
3.6 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1996.
  5. //
  6. // File: laylkb.hxx
  7. //
  8. // Contents: Layout ILockBytes class for layout docfile
  9. //
  10. // Classes: CLayoutLockBytes
  11. //
  12. // Functions:
  13. //
  14. // History: 19-Feb-96 SusiAa Created
  15. //
  16. //----------------------------------------------------------------------------
  17. #ifndef __LAYOUTLKB_HXX__
  18. #define __LAYOUTLKB_HXX__
  19. //+---------------------------------------------------------------------------
  20. //
  21. // Class: CLayoutLockBytes
  22. //
  23. // Purpose:
  24. //
  25. // Interface:
  26. //
  27. // History: 21-Feb-96 SusiA Created
  28. //
  29. // Notes:
  30. //
  31. //----------------------------------------------------------------------------
  32. class CLayoutLockBytes: public ILockBytes
  33. {
  34. public:
  35. CLayoutLockBytes();
  36. ~CLayoutLockBytes();
  37. SCODE Init(OLECHAR const *pwcsName, DWORD grfMode);
  38. // IUnknown
  39. STDMETHOD(QueryInterface)(REFIID iid, void **ppvObj);
  40. STDMETHOD_(ULONG, AddRef)(void);
  41. STDMETHOD_(ULONG, Release)(void);
  42. // ILockBytes
  43. STDMETHOD(ReadAt)(ULARGE_INTEGER ulOffset,
  44. VOID HUGEP *pv,
  45. ULONG cb,
  46. ULONG *pcbRead);
  47. STDMETHOD(WriteAt)(ULARGE_INTEGER ulOffset,
  48. VOID const HUGEP *pv,
  49. ULONG cb,
  50. ULONG *pcbWritten);
  51. STDMETHOD(Flush)(void);
  52. STDMETHOD(SetSize)(ULARGE_INTEGER cb);
  53. STDMETHOD(LockRegion)(ULARGE_INTEGER libOffset,
  54. ULARGE_INTEGER cb,
  55. DWORD dwLockType);
  56. STDMETHOD(UnlockRegion)(ULARGE_INTEGER libOffset,
  57. ULARGE_INTEGER cb,
  58. DWORD dwLockType);
  59. STDMETHOD(Stat)(STATSTG *pstatstg, DWORD grfStatFlag);
  60. inline HANDLE GetHandle(void);
  61. inline TCHAR *GetScriptName(void);
  62. inline void ClearScriptName(void);
  63. SCODE StartLogging(void);
  64. SCODE StopLogging(void);
  65. private:
  66. LONG _cReferences;
  67. BOOL _fLogging;
  68. ULONG _cbSectorShift;
  69. DWORD _grfMode;
  70. TCHAR _atcScriptName[MAX_PATH + 1];
  71. HANDLE _hScript;
  72. OLECHAR _awcName[MAX_PATH + 1];
  73. HANDLE _h;
  74. BOOL _fCSInitialized;
  75. CRITICAL_SECTION _cs;
  76. };
  77. //+---------------------------------------------------------------------------
  78. //
  79. // Member: CLayoutLockBytes::GetHandle, public
  80. //
  81. // Synopsis: Return the file handle for this ILockBytes
  82. //
  83. // Arguments: None
  84. //
  85. // Returns: File Handle
  86. //
  87. // History: 20-Feb-96 SusiA Created
  88. //
  89. //----------------------------------------------------------------------------
  90. inline HANDLE CLayoutLockBytes::GetHandle(void)
  91. {
  92. return _h;
  93. }
  94. //+---------------------------------------------------------------------------
  95. //
  96. // Member: CLayoutLockBytes::GetScriptName, public
  97. //
  98. // Returns: Pointer to script name
  99. //
  100. // History: 24-Feb-96 SusiA Created
  101. //
  102. //----------------------------------------------------------------------------
  103. inline TCHAR * CLayoutLockBytes::GetScriptName(void)
  104. {
  105. return _atcScriptName;
  106. }
  107. //+---------------------------------------------------------------------------
  108. //
  109. // Member: CLayoutLockBytes::ClearScriptName, public
  110. //
  111. // Returns: Pointer to script name
  112. //
  113. // History: 24-Feb-96 SusiA Created
  114. //
  115. //----------------------------------------------------------------------------
  116. inline void CLayoutLockBytes::ClearScriptName(void)
  117. {
  118. _atcScriptName[0] = TEXT('\0');
  119. }
  120. #endif // #ifndef __FILELKB_HXX__