jwasfc.pas 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. {******************************************************************************}
  2. { }
  3. { Windows File Protection API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: sfc.h, released August 2001. The original Pascal }
  9. { code is: Sfc.pas, released December 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. // $Id: JwaSfc.pas,v 1.7 2005/09/06 16:36:50 marquardt Exp $
  43. unit JwaSfc;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "sfc.h"'}
  47. {$HPPEMIT ''}
  48. {$I jediapilib.inc}
  49. interface
  50. uses
  51. JwaWindows;
  52. const
  53. SFC_DISABLE_NORMAL = 0;
  54. {$EXTERNALSYM SFC_DISABLE_NORMAL}
  55. SFC_DISABLE_ASK = 1;
  56. {$EXTERNALSYM SFC_DISABLE_ASK}
  57. SFC_DISABLE_ONCE = 2;
  58. {$EXTERNALSYM SFC_DISABLE_ONCE}
  59. SFC_DISABLE_SETUP = 3;
  60. {$EXTERNALSYM SFC_DISABLE_SETUP}
  61. SFC_DISABLE_NOPOPUPS = 4;
  62. {$EXTERNALSYM SFC_DISABLE_NOPOPUPS}
  63. SFC_SCAN_NORMAL = 0;
  64. {$EXTERNALSYM SFC_SCAN_NORMAL}
  65. SFC_SCAN_ALWAYS = 1;
  66. {$EXTERNALSYM SFC_SCAN_ALWAYS}
  67. SFC_SCAN_ONCE = 2;
  68. {$EXTERNALSYM SFC_SCAN_ONCE}
  69. SFC_SCAN_IMMEDIATE = 3;
  70. {$EXTERNALSYM SFC_SCAN_IMMEDIATE}
  71. SFC_QUOTA_DEFAULT = 50;
  72. {$EXTERNALSYM SFC_QUOTA_DEFAULT}
  73. SFC_QUOTA_ALL_FILES = ULONG(-1);
  74. {$EXTERNALSYM SFC_QUOTA_ALL_FILES}
  75. SFC_IDLE_TRIGGER = WideString('WFP_IDLE_TRIGGER');
  76. {$EXTERNALSYM SFC_IDLE_TRIGGER}
  77. type
  78. PPROTECTED_FILE_DATA = ^PROTECTED_FILE_DATA;
  79. {$EXTERNALSYM PPROTECTED_FILE_DATA}
  80. _PROTECTED_FILE_DATA = record
  81. FileName: array [0..MAX_PATH - 1] of WCHAR;
  82. FileNumber: DWORD;
  83. end;
  84. {$EXTERNALSYM _PROTECTED_FILE_DATA}
  85. PROTECTED_FILE_DATA = _PROTECTED_FILE_DATA;
  86. {$EXTERNALSYM PROTECTED_FILE_DATA}
  87. TProtectedFileData = PROTECTED_FILE_DATA;
  88. PProtectedFileData = PPROTECTED_FILE_DATA;
  89. function SfcGetNextProtectedFile(RpcHandle: HANDLE;
  90. var ProtFileData: PROTECTED_FILE_DATA): BOOL; stdcall;
  91. {$EXTERNALSYM SfcGetNextProtectedFile}
  92. function SfcIsFileProtected(RpcHandle: HANDLE; ProtFileName: LPCWSTR): BOOL; stdcall;
  93. {$EXTERNALSYM SfcIsFileProtected}
  94. //
  95. // new APIs which are not currently supported, but are stubbed out
  96. //
  97. function SfpVerifyFile(pszFileName: LPCSTR; pszError: LPSTR; dwErrSize: DWORD): BOOL; stdcall;
  98. implementation
  99. uses
  100. JwaWinDLLNames;
  101. {$IFDEF DYNAMIC_LINK}
  102. var
  103. _SfcGetNextProtectedFile: Pointer;
  104. function SfcGetNextProtectedFile;
  105. begin
  106. GetProcedureAddress(_SfcGetNextProtectedFile, Sfclib, 'SfcGetNextProtectedFile');
  107. asm
  108. MOV ESP, EBP
  109. POP EBP
  110. JMP [_SfcGetNextProtectedFile]
  111. end;
  112. end;
  113. var
  114. _SfcIsFileProtected: Pointer;
  115. function SfcIsFileProtected;
  116. begin
  117. GetProcedureAddress(_SfcIsFileProtected, Sfclib, 'SfcIsFileProtected');
  118. asm
  119. MOV ESP, EBP
  120. POP EBP
  121. JMP [_SfcIsFileProtected]
  122. end;
  123. end;
  124. var
  125. _SfpVerifyFile: Pointer;
  126. function SfpVerifyFile;
  127. begin
  128. GetProcedureAddress(_SfpVerifyFile, Sfclib, 'SfpVerifyFile');
  129. asm
  130. MOV ESP, EBP
  131. POP EBP
  132. JMP [_SfpVerifyFile]
  133. end;
  134. end;
  135. {$ELSE}
  136. function SfcGetNextProtectedFile; external Sfclib name 'SfcGetNextProtectedFile';
  137. function SfcIsFileProtected; external Sfclib name 'SfcIsFileProtected';
  138. function SfpVerifyFile; external Sfclib name 'SfpVerifyFile';
  139. {$ENDIF DYNAMIC_LINK}
  140. end.