JwaWinBase.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:683k
源码类别:

Windows编程

开发平台:

Delphi

  1.   end;
  2. end;
  3. {$ELSE}
  4. function CreateFiber; external kernel32 name 'CreateFiber';
  5. {$ENDIF DYNAMIC_LINK}
  6. {$IFDEF DYNAMIC_LINK}
  7. var
  8.   _CreateFiberEx: Pointer;
  9. function CreateFiberEx;
  10. begin
  11.   GetProcedureAddress(_CreateFiberEx, kernel32, 'CreateFiberEx');
  12.   asm
  13.     mov esp, ebp
  14.     pop ebp
  15.     jmp [_CreateFiberEx]
  16.   end;
  17. end;
  18. {$ELSE}
  19. function CreateFiberEx; external kernel32 name 'CreateFiberEx';
  20. {$ENDIF DYNAMIC_LINK}
  21. {$IFDEF DYNAMIC_LINK}
  22. var
  23.   _DeleteFiber: Pointer;
  24. procedure DeleteFiber;
  25. begin
  26.   GetProcedureAddress(_DeleteFiber, kernel32, 'DeleteFiber');
  27.   asm
  28.     mov esp, ebp
  29.     pop ebp
  30.     jmp [_DeleteFiber]
  31.   end;
  32. end;
  33. {$ELSE}
  34. procedure DeleteFiber; external kernel32 name 'DeleteFiber';
  35. {$ENDIF DYNAMIC_LINK}
  36. {$IFDEF DYNAMIC_LINK}
  37. var
  38.   _ConvertThreadToFiber: Pointer;
  39. function ConvertThreadToFiber;
  40. begin
  41.   GetProcedureAddress(_ConvertThreadToFiber, kernel32, 'ConvertThreadToFiber');
  42.   asm
  43.     mov esp, ebp
  44.     pop ebp
  45.     jmp [_ConvertThreadToFiber]
  46.   end;
  47. end;
  48. {$ELSE}
  49. function ConvertThreadToFiber; external kernel32 name 'ConvertThreadToFiber';
  50. {$ENDIF DYNAMIC_LINK}
  51. {$IFDEF DYNAMIC_LINK}
  52. var
  53.   _ConvertThreadToFiberEx: Pointer;
  54. function ConvertThreadToFiberEx;
  55. begin
  56.   GetProcedureAddress(_ConvertThreadToFiberEx, kernel32, 'ConvertThreadToFiberEx');
  57.   asm
  58.     mov esp, ebp
  59.     pop ebp
  60.     jmp [_ConvertThreadToFiberEx]
  61.   end;
  62. end;
  63. {$ELSE}
  64. function ConvertThreadToFiberEx; external kernel32 name 'ConvertThreadToFiberEx';
  65. {$ENDIF DYNAMIC_LINK}
  66. {$IFDEF DYNAMIC_LINK}
  67. var
  68.   _ConvertFiberToThread: Pointer;
  69. function ConvertFiberToThread;
  70. begin
  71.   GetProcedureAddress(_ConvertFiberToThread, kernel32, 'ConvertFiberToThread');
  72.   asm
  73.     mov esp, ebp
  74.     pop ebp
  75.     jmp [_ConvertFiberToThread]
  76.   end;
  77. end;
  78. {$ELSE}
  79. function ConvertFiberToThread; external kernel32 name 'ConvertFiberToThread';
  80. {$ENDIF DYNAMIC_LINK}
  81. {$IFDEF DYNAMIC_LINK}
  82. var
  83.   _SwitchToFiber: Pointer;
  84. procedure SwitchToFiber;
  85. begin
  86.   GetProcedureAddress(_SwitchToFiber, kernel32, 'SwitchToFiber');
  87.   asm
  88.     mov esp, ebp
  89.     pop ebp
  90.     jmp [_SwitchToFiber]
  91.   end;
  92. end;
  93. {$ELSE}
  94. procedure SwitchToFiber; external kernel32 name 'SwitchToFiber';
  95. {$ENDIF DYNAMIC_LINK}
  96. {$IFDEF DYNAMIC_LINK}
  97. var
  98.   _SwitchToThread: Pointer;
  99. function SwitchToThread;
  100. begin
  101.   GetProcedureAddress(_SwitchToThread, kernel32, 'SwitchToThread');
  102.   asm
  103.     mov esp, ebp
  104.     pop ebp
  105.     jmp [_SwitchToThread]
  106.   end;
  107. end;
  108. {$ELSE}
  109. function SwitchToThread; external kernel32 name 'SwitchToThread';
  110. {$ENDIF DYNAMIC_LINK}
  111. {$IFDEF DYNAMIC_LINK}
  112. var
  113.   _CreateThread: Pointer;
  114. function CreateThread;
  115. begin
  116.   GetProcedureAddress(_CreateThread, kernel32, 'CreateThread');
  117.   asm
  118.     mov esp, ebp
  119.     pop ebp
  120.     jmp [_CreateThread]
  121.   end;
  122. end;
  123. {$ELSE}
  124. function CreateThread; external kernel32 name 'CreateThread';
  125. {$ENDIF DYNAMIC_LINK}
  126. {$IFDEF DYNAMIC_LINK}
  127. var
  128.   _CreateRemoteThread: Pointer;
  129. function CreateRemoteThread;
  130. begin
  131.   GetProcedureAddress(_CreateRemoteThread, kernel32, 'CreateRemoteThread');
  132.   asm
  133.     mov esp, ebp
  134.     pop ebp
  135.     jmp [_CreateRemoteThread]
  136.   end;
  137. end;
  138. {$ELSE}
  139. function CreateRemoteThread; external kernel32 name 'CreateRemoteThread';
  140. {$ENDIF DYNAMIC_LINK}
  141. {$IFDEF DYNAMIC_LINK}
  142. var
  143.   _GetCurrentThread: Pointer;
  144. function GetCurrentThread;
  145. begin
  146.   GetProcedureAddress(_GetCurrentThread, kernel32, 'GetCurrentThread');
  147.   asm
  148.     mov esp, ebp
  149.     pop ebp
  150.     jmp [_GetCurrentThread]
  151.   end;
  152. end;
  153. {$ELSE}
  154. function GetCurrentThread; external kernel32 name 'GetCurrentThread';
  155. {$ENDIF DYNAMIC_LINK}
  156. {$IFDEF DYNAMIC_LINK}
  157. var
  158.   _GetCurrentThreadId: Pointer;
  159. function GetCurrentThreadId;
  160. begin
  161.   GetProcedureAddress(_GetCurrentThreadId, kernel32, 'GetCurrentThreadId');
  162.   asm
  163.     mov esp, ebp
  164.     pop ebp
  165.     jmp [_GetCurrentThreadId]
  166.   end;
  167. end;
  168. {$ELSE}
  169. function GetCurrentThreadId; external kernel32 name 'GetCurrentThreadId';
  170. {$ENDIF DYNAMIC_LINK}
  171. {$IFDEF DYNAMIC_LINK}
  172. var
  173.   _GetProcessIdOfThread: Pointer;
  174. function GetProcessIdOfThread;
  175. begin
  176.   GetProcedureAddress(_GetProcessIdOfThread, kernel32, 'GetProcessIdOfThread');
  177.   asm
  178.     mov esp, ebp
  179.     pop ebp
  180.     jmp [_GetProcessIdOfThread]
  181.   end;
  182. end;
  183. {$ELSE}
  184. function GetProcessIdOfThread; external kernel32 name 'GetProcessIdOfThread';
  185. {$ENDIF DYNAMIC_LINK}
  186. {$IFDEF DYNAMIC_LINK}
  187. var
  188.   _GetThreadId: Pointer;
  189. function GetThreadId;
  190. begin
  191.   GetProcedureAddress(_GetThreadId, kernel32, 'GetThreadId');
  192.   asm
  193.     mov esp, ebp
  194.     pop ebp
  195.     jmp [_GetThreadId]
  196.   end;
  197. end;
  198. {$ELSE}
  199. function GetThreadId; external kernel32 name 'GetThreadId';
  200. {$ENDIF DYNAMIC_LINK}
  201. {$IFDEF DYNAMIC_LINK}
  202. var
  203.   _GetProcessId: Pointer;
  204. function GetProcessId;
  205. begin
  206.   GetProcedureAddress(_GetProcessId, kernel32, 'GetProcessId');
  207.   asm
  208.     mov esp, ebp
  209.     pop ebp
  210.     jmp [_GetProcessId]
  211.   end;
  212. end;
  213. {$ELSE}
  214. function GetProcessId; external kernel32 name 'GetProcessId';
  215. {$ENDIF DYNAMIC_LINK}
  216. {$IFDEF DYNAMIC_LINK}
  217. var
  218.   _GetCurrentProcessorNumber: Pointer;
  219. function GetCurrentProcessorNumber;
  220. begin
  221.   GetProcedureAddress(_GetCurrentProcessorNumber, kernel32, 'GetCurrentProcessorNumber');
  222.   asm
  223.     mov esp, ebp
  224.     pop ebp
  225.     jmp [_GetCurrentProcessorNumber]
  226.   end;
  227. end;
  228. {$ELSE}
  229. function GetCurrentProcessorNumber; external kernel32 name 'GetCurrentProcessorNumber';
  230. {$ENDIF DYNAMIC_LINK}
  231. {$IFDEF DYNAMIC_LINK}
  232. var
  233.   _SetThreadAffinityMask: Pointer;
  234. function SetThreadAffinityMask;
  235. begin
  236.   GetProcedureAddress(_SetThreadAffinityMask, kernel32, 'SetThreadAffinityMask');
  237.   asm
  238.     mov esp, ebp
  239.     pop ebp
  240.     jmp [_SetThreadAffinityMask]
  241.   end;
  242. end;
  243. {$ELSE}
  244. function SetThreadAffinityMask; external kernel32 name 'SetThreadAffinityMask';
  245. {$ENDIF DYNAMIC_LINK}
  246. {$IFDEF DYNAMIC_LINK}
  247. var
  248.   _SetThreadIdealProcessor: Pointer;
  249. function SetThreadIdealProcessor;
  250. begin
  251.   GetProcedureAddress(_SetThreadIdealProcessor, kernel32, 'SetThreadIdealProcessor');
  252.   asm
  253.     mov esp, ebp
  254.     pop ebp
  255.     jmp [_SetThreadIdealProcessor]
  256.   end;
  257. end;
  258. {$ELSE}
  259. function SetThreadIdealProcessor; external kernel32 name 'SetThreadIdealProcessor';
  260. {$ENDIF DYNAMIC_LINK}
  261. {$IFDEF DYNAMIC_LINK}
  262. var
  263.   _SetProcessPriorityBoost: Pointer;
  264. function SetProcessPriorityBoost;
  265. begin
  266.   GetProcedureAddress(_SetProcessPriorityBoost, kernel32, 'SetProcessPriorityBoost');
  267.   asm
  268.     mov esp, ebp
  269.     pop ebp
  270.     jmp [_SetProcessPriorityBoost]
  271.   end;
  272. end;
  273. {$ELSE}
  274. function SetProcessPriorityBoost; external kernel32 name 'SetProcessPriorityBoost';
  275. {$ENDIF DYNAMIC_LINK}
  276. {$IFDEF DYNAMIC_LINK}
  277. var
  278.   _GetProcessPriorityBoost: Pointer;
  279. function GetProcessPriorityBoost;
  280. begin
  281.   GetProcedureAddress(_GetProcessPriorityBoost, kernel32, 'GetProcessPriorityBoost');
  282.   asm
  283.     mov esp, ebp
  284.     pop ebp
  285.     jmp [_GetProcessPriorityBoost]
  286.   end;
  287. end;
  288. {$ELSE}
  289. function GetProcessPriorityBoost; external kernel32 name 'GetProcessPriorityBoost';
  290. {$ENDIF DYNAMIC_LINK}
  291. {$IFDEF DYNAMIC_LINK}
  292. var
  293.   _RequestWakeupLatency: Pointer;
  294. function RequestWakeupLatency;
  295. begin
  296.   GetProcedureAddress(_RequestWakeupLatency, kernel32, 'RequestWakeupLatency');
  297.   asm
  298.     mov esp, ebp
  299.     pop ebp
  300.     jmp [_RequestWakeupLatency]
  301.   end;
  302. end;
  303. {$ELSE}
  304. function RequestWakeupLatency; external kernel32 name 'RequestWakeupLatency';
  305. {$ENDIF DYNAMIC_LINK}
  306. {$IFDEF DYNAMIC_LINK}
  307. var
  308.   _IsSystemResumeAutomatic: Pointer;
  309. function IsSystemResumeAutomatic;
  310. begin
  311.   GetProcedureAddress(_IsSystemResumeAutomatic, kernel32, 'IsSystemResumeAutomatic');
  312.   asm
  313.     mov esp, ebp
  314.     pop ebp
  315.     jmp [_IsSystemResumeAutomatic]
  316.   end;
  317. end;
  318. {$ELSE}
  319. function IsSystemResumeAutomatic; external kernel32 name 'IsSystemResumeAutomatic';
  320. {$ENDIF DYNAMIC_LINK}
  321. {$IFDEF DYNAMIC_LINK}
  322. var
  323.   _OpenThread: Pointer;
  324. function OpenThread;
  325. begin
  326.   GetProcedureAddress(_OpenThread, kernel32, 'OpenThread');
  327.   asm
  328.     mov esp, ebp
  329.     pop ebp
  330.     jmp [_OpenThread]
  331.   end;
  332. end;
  333. {$ELSE}
  334. function OpenThread; external kernel32 name 'OpenThread';
  335. {$ENDIF DYNAMIC_LINK}
  336. {$IFDEF DYNAMIC_LINK}
  337. var
  338.   _SetThreadPriority: Pointer;
  339. function SetThreadPriority;
  340. begin
  341.   GetProcedureAddress(_SetThreadPriority, kernel32, 'SetThreadPriority');
  342.   asm
  343.     mov esp, ebp
  344.     pop ebp
  345.     jmp [_SetThreadPriority]
  346.   end;
  347. end;
  348. {$ELSE}
  349. function SetThreadPriority; external kernel32 name 'SetThreadPriority';
  350. {$ENDIF DYNAMIC_LINK}
  351. {$IFDEF DYNAMIC_LINK}
  352. var
  353.   _SetThreadPriorityBoost: Pointer;
  354. function SetThreadPriorityBoost;
  355. begin
  356.   GetProcedureAddress(_SetThreadPriorityBoost, kernel32, 'SetThreadPriorityBoost');
  357.   asm
  358.     mov esp, ebp
  359.     pop ebp
  360.     jmp [_SetThreadPriorityBoost]
  361.   end;
  362. end;
  363. {$ELSE}
  364. function SetThreadPriorityBoost; external kernel32 name 'SetThreadPriorityBoost';
  365. {$ENDIF DYNAMIC_LINK}
  366. {$IFDEF DYNAMIC_LINK}
  367. var
  368.   _GetThreadPriorityBoost: Pointer;
  369. function GetThreadPriorityBoost;
  370. begin
  371.   GetProcedureAddress(_GetThreadPriorityBoost, kernel32, 'GetThreadPriorityBoost');
  372.   asm
  373.     mov esp, ebp
  374.     pop ebp
  375.     jmp [_GetThreadPriorityBoost]
  376.   end;
  377. end;
  378. {$ELSE}
  379. function GetThreadPriorityBoost; external kernel32 name 'GetThreadPriorityBoost';
  380. {$ENDIF DYNAMIC_LINK}
  381. {$IFDEF DYNAMIC_LINK}
  382. var
  383.   _GetThreadPriority: Pointer;
  384. function GetThreadPriority;
  385. begin
  386.   GetProcedureAddress(_GetThreadPriority, kernel32, 'GetThreadPriority');
  387.   asm
  388.     mov esp, ebp
  389.     pop ebp
  390.     jmp [_GetThreadPriority]
  391.   end;
  392. end;
  393. {$ELSE}
  394. function GetThreadPriority; external kernel32 name 'GetThreadPriority';
  395. {$ENDIF DYNAMIC_LINK}
  396. {$IFDEF DYNAMIC_LINK}
  397. var
  398.   _GetThreadTimes: Pointer;
  399. function GetThreadTimes;
  400. begin
  401.   GetProcedureAddress(_GetThreadTimes, kernel32, 'GetThreadTimes');
  402.   asm
  403.     mov esp, ebp
  404.     pop ebp
  405.     jmp [_GetThreadTimes]
  406.   end;
  407. end;
  408. {$ELSE}
  409. function GetThreadTimes; external kernel32 name 'GetThreadTimes';
  410. {$ENDIF DYNAMIC_LINK}
  411. {$IFDEF DYNAMIC_LINK}
  412. var
  413.   _ExitThread: Pointer;
  414. procedure ExitThread;
  415. begin
  416.   GetProcedureAddress(_ExitThread, kernel32, 'ExitThread');
  417.   asm
  418.     mov esp, ebp
  419.     pop ebp
  420.     jmp [_ExitThread]
  421.   end;
  422. end;
  423. {$ELSE}
  424. procedure ExitThread; external kernel32 name 'ExitThread';
  425. {$ENDIF DYNAMIC_LINK}
  426. {$IFDEF DYNAMIC_LINK}
  427. var
  428.   _TerminateThread: Pointer;
  429. function TerminateThread;
  430. begin
  431.   GetProcedureAddress(_TerminateThread, kernel32, 'TerminateThread');
  432.   asm
  433.     mov esp, ebp
  434.     pop ebp
  435.     jmp [_TerminateThread]
  436.   end;
  437. end;
  438. {$ELSE}
  439. function TerminateThread; external kernel32 name 'TerminateThread';
  440. {$ENDIF DYNAMIC_LINK}
  441. {$IFDEF DYNAMIC_LINK}
  442. var
  443.   _GetExitCodeThread: Pointer;
  444. function GetExitCodeThread;
  445. begin
  446.   GetProcedureAddress(_GetExitCodeThread, kernel32, 'GetExitCodeThread');
  447.   asm
  448.     mov esp, ebp
  449.     pop ebp
  450.     jmp [_GetExitCodeThread]
  451.   end;
  452. end;
  453. {$ELSE}
  454. function GetExitCodeThread; external kernel32 name 'GetExitCodeThread';
  455. {$ENDIF DYNAMIC_LINK}
  456. {$IFDEF DYNAMIC_LINK}
  457. var
  458.   _GetThreadSelectorEntry: Pointer;
  459. function GetThreadSelectorEntry;
  460. begin
  461.   GetProcedureAddress(_GetThreadSelectorEntry, kernel32, 'GetThreadSelectorEntry');
  462.   asm
  463.     mov esp, ebp
  464.     pop ebp
  465.     jmp [_GetThreadSelectorEntry]
  466.   end;
  467. end;
  468. {$ELSE}
  469. function GetThreadSelectorEntry; external kernel32 name 'GetThreadSelectorEntry';
  470. {$ENDIF DYNAMIC_LINK}
  471. {$IFDEF DYNAMIC_LINK}
  472. var
  473.   _SetThreadExecutionState: Pointer;
  474. function SetThreadExecutionState;
  475. begin
  476.   GetProcedureAddress(_SetThreadExecutionState, kernel32, 'SetThreadExecutionState');
  477.   asm
  478.     mov esp, ebp
  479.     pop ebp
  480.     jmp [_SetThreadExecutionState]
  481.   end;
  482. end;
  483. {$ELSE}
  484. function SetThreadExecutionState; external kernel32 name 'SetThreadExecutionState';
  485. {$ENDIF DYNAMIC_LINK}
  486. {$IFDEF DYNAMIC_LINK}
  487. var
  488.   _GetLastError: Pointer;
  489. function GetLastError;
  490. begin
  491.   GetProcedureAddress(_GetLastError, kernel32, 'GetLastError');
  492.   asm
  493.     mov esp, ebp
  494.     pop ebp
  495.     jmp [_GetLastError]
  496.   end;
  497. end;
  498. {$ELSE}
  499. function GetLastError; external kernel32 name 'GetLastError';
  500. {$ENDIF DYNAMIC_LINK}
  501. {$IFDEF DYNAMIC_LINK}
  502. var
  503.   _SetLastError: Pointer;
  504. procedure SetLastError;
  505. begin
  506.   GetProcedureAddress(_SetLastError, kernel32, 'SetLastError');
  507.   asm
  508.     mov esp, ebp
  509.     pop ebp
  510.     jmp [_SetLastError]
  511.   end;
  512. end;
  513. {$ELSE}
  514. procedure SetLastError; external kernel32 name 'SetLastError';
  515. {$ENDIF DYNAMIC_LINK}
  516. {$IFDEF DYNAMIC_LINK}
  517. var
  518.   _RestoreLastError: Pointer;
  519. procedure RestoreLastError;
  520. begin
  521.   GetProcedureAddress(_RestoreLastError, kernel32, 'RestoreLastError');
  522.   asm
  523.     mov esp, ebp
  524.     pop ebp
  525.     jmp [_RestoreLastError]
  526.   end;
  527. end;
  528. {$ELSE}
  529. procedure RestoreLastError; external kernel32 name 'RestoreLastError';
  530. {$ENDIF DYNAMIC_LINK}
  531. {$IFDEF DYNAMIC_LINK}
  532. var
  533.   _GetOverlappedResult: Pointer;
  534. function GetOverlappedResult;
  535. begin
  536.   GetProcedureAddress(_GetOverlappedResult, kernel32, 'GetOverlappedResult');
  537.   asm
  538.     mov esp, ebp
  539.     pop ebp
  540.     jmp [_GetOverlappedResult]
  541.   end;
  542. end;
  543. {$ELSE}
  544. function GetOverlappedResult; external kernel32 name 'GetOverlappedResult';
  545. {$ENDIF DYNAMIC_LINK}
  546. {$IFDEF DYNAMIC_LINK}
  547. var
  548.   _CreateIoCompletionPort: Pointer;
  549. function CreateIoCompletionPort;
  550. begin
  551.   GetProcedureAddress(_CreateIoCompletionPort, kernel32, 'CreateIoCompletionPort');
  552.   asm
  553.     mov esp, ebp
  554.     pop ebp
  555.     jmp [_CreateIoCompletionPort]
  556.   end;
  557. end;
  558. {$ELSE}
  559. function CreateIoCompletionPort; external kernel32 name 'CreateIoCompletionPort';
  560. {$ENDIF DYNAMIC_LINK}
  561. {$IFDEF DYNAMIC_LINK}
  562. var
  563.   _GetQueuedCompletionStatus: Pointer;
  564. function GetQueuedCompletionStatus;
  565. begin
  566.   GetProcedureAddress(_GetQueuedCompletionStatus, kernel32, 'GetQueuedCompletionStatus');
  567.   asm
  568.     mov esp, ebp
  569.     pop ebp
  570.     jmp [_GetQueuedCompletionStatus]
  571.   end;
  572. end;
  573. {$ELSE}
  574. function GetQueuedCompletionStatus; external kernel32 name 'GetQueuedCompletionStatus';
  575. {$ENDIF DYNAMIC_LINK}
  576. {$IFDEF DYNAMIC_LINK}
  577. var
  578.   _PostQueuedCompletionStatus: Pointer;
  579. function PostQueuedCompletionStatus;
  580. begin
  581.   GetProcedureAddress(_PostQueuedCompletionStatus, kernel32, 'PostQueuedCompletionStatus');
  582.   asm
  583.     mov esp, ebp
  584.     pop ebp
  585.     jmp [_PostQueuedCompletionStatus]
  586.   end;
  587. end;
  588. {$ELSE}
  589. function PostQueuedCompletionStatus; external kernel32 name 'PostQueuedCompletionStatus';
  590. {$ENDIF DYNAMIC_LINK}
  591. {$IFDEF DYNAMIC_LINK}
  592. var
  593.   _SetErrorMode: Pointer;
  594. function SetErrorMode;
  595. begin
  596.   GetProcedureAddress(_SetErrorMode, kernel32, 'SetErrorMode');
  597.   asm
  598.     mov esp, ebp
  599.     pop ebp
  600.     jmp [_SetErrorMode]
  601.   end;
  602. end;
  603. {$ELSE}
  604. function SetErrorMode; external kernel32 name 'SetErrorMode';
  605. {$ENDIF DYNAMIC_LINK}
  606. {$IFDEF DYNAMIC_LINK}
  607. var
  608.   _ReadProcessMemory: Pointer;
  609. function ReadProcessMemory;
  610. begin
  611.   GetProcedureAddress(_ReadProcessMemory, kernel32, 'ReadProcessMemory');
  612.   asm
  613.     mov esp, ebp
  614.     pop ebp
  615.     jmp [_ReadProcessMemory]
  616.   end;
  617. end;
  618. {$ELSE}
  619. function ReadProcessMemory; external kernel32 name 'ReadProcessMemory';
  620. {$ENDIF DYNAMIC_LINK}
  621. {$IFDEF DYNAMIC_LINK}
  622. var
  623.   _WriteProcessMemory: Pointer;
  624. function WriteProcessMemory;
  625. begin
  626.   GetProcedureAddress(_WriteProcessMemory, kernel32, 'WriteProcessMemory');
  627.   asm
  628.     mov esp, ebp
  629.     pop ebp
  630.     jmp [_WriteProcessMemory]
  631.   end;
  632. end;
  633. {$ELSE}
  634. function WriteProcessMemory; external kernel32 name 'WriteProcessMemory';
  635. {$ENDIF DYNAMIC_LINK}
  636. {$IFDEF DYNAMIC_LINK}
  637. var
  638.   _GetThreadContext: Pointer;
  639. function GetThreadContext;
  640. begin
  641.   GetProcedureAddress(_GetThreadContext, kernel32, 'GetThreadContext');
  642.   asm
  643.     mov esp, ebp
  644.     pop ebp
  645.     jmp [_GetThreadContext]
  646.   end;
  647. end;
  648. {$ELSE}
  649. function GetThreadContext; external kernel32 name 'GetThreadContext';
  650. {$ENDIF DYNAMIC_LINK}
  651. {$IFDEF DYNAMIC_LINK}
  652. var
  653.   _SetThreadContext: Pointer;
  654. function SetThreadContext;
  655. begin
  656.   GetProcedureAddress(_SetThreadContext, kernel32, 'SetThreadContext');
  657.   asm
  658.     mov esp, ebp
  659.     pop ebp
  660.     jmp [_SetThreadContext]
  661.   end;
  662. end;
  663. {$ELSE}
  664. function SetThreadContext; external kernel32 name 'SetThreadContext';
  665. {$ENDIF DYNAMIC_LINK}
  666. {$IFDEF DYNAMIC_LINK}
  667. var
  668.   _SuspendThread: Pointer;
  669. function SuspendThread;
  670. begin
  671.   GetProcedureAddress(_SuspendThread, kernel32, 'SuspendThread');
  672.   asm
  673.     mov esp, ebp
  674.     pop ebp
  675.     jmp [_SuspendThread]
  676.   end;
  677. end;
  678. {$ELSE}
  679. function SuspendThread; external kernel32 name 'SuspendThread';
  680. {$ENDIF DYNAMIC_LINK}
  681. {$IFDEF DYNAMIC_LINK}
  682. var
  683.   _ResumeThread: Pointer;
  684. function ResumeThread;
  685. begin
  686.   GetProcedureAddress(_ResumeThread, kernel32, 'ResumeThread');
  687.   asm
  688.     mov esp, ebp
  689.     pop ebp
  690.     jmp [_ResumeThread]
  691.   end;
  692. end;
  693. {$ELSE}
  694. function ResumeThread; external kernel32 name 'ResumeThread';
  695. {$ENDIF DYNAMIC_LINK}
  696. {$IFDEF DYNAMIC_LINK}
  697. var
  698.   _QueueUserAPC: Pointer;
  699. function QueueUserAPC;
  700. begin
  701.   GetProcedureAddress(_QueueUserAPC, kernel32, 'QueueUserAPC');
  702.   asm
  703.     mov esp, ebp
  704.     pop ebp
  705.     jmp [_QueueUserAPC]
  706.   end;
  707. end;
  708. {$ELSE}
  709. function QueueUserAPC; external kernel32 name 'QueueUserAPC';
  710. {$ENDIF DYNAMIC_LINK}
  711. {$IFDEF DYNAMIC_LINK}
  712. var
  713.   _IsDebuggerPresent: Pointer;
  714. function IsDebuggerPresent;
  715. begin
  716.   GetProcedureAddress(_IsDebuggerPresent, kernel32, 'IsDebuggerPresent');
  717.   asm
  718.     mov esp, ebp
  719.     pop ebp
  720.     jmp [_IsDebuggerPresent]
  721.   end;
  722. end;
  723. {$ELSE}
  724. function IsDebuggerPresent; external kernel32 name 'IsDebuggerPresent';
  725. {$ENDIF DYNAMIC_LINK}
  726. {$IFDEF DYNAMIC_LINK}
  727. var
  728.   _DebugBreak: Pointer;
  729. procedure DebugBreak;
  730. begin
  731.   GetProcedureAddress(_DebugBreak, kernel32, 'DebugBreak');
  732.   asm
  733.     mov esp, ebp
  734.     pop ebp
  735.     jmp [_DebugBreak]
  736.   end;
  737. end;
  738. {$ELSE}
  739. procedure DebugBreak; external kernel32 name 'DebugBreak';
  740. {$ENDIF DYNAMIC_LINK}
  741. {$IFDEF DYNAMIC_LINK}
  742. var
  743.   _WaitForDebugEvent: Pointer;
  744. function WaitForDebugEvent;
  745. begin
  746.   GetProcedureAddress(_WaitForDebugEvent, kernel32, 'WaitForDebugEvent');
  747.   asm
  748.     mov esp, ebp
  749.     pop ebp
  750.     jmp [_WaitForDebugEvent]
  751.   end;
  752. end;
  753. {$ELSE}
  754. function WaitForDebugEvent; external kernel32 name 'WaitForDebugEvent';
  755. {$ENDIF DYNAMIC_LINK}
  756. {$IFDEF DYNAMIC_LINK}
  757. var
  758.   _ContinueDebugEvent: Pointer;
  759. function ContinueDebugEvent;
  760. begin
  761.   GetProcedureAddress(_ContinueDebugEvent, kernel32, 'ContinueDebugEvent');
  762.   asm
  763.     mov esp, ebp
  764.     pop ebp
  765.     jmp [_ContinueDebugEvent]
  766.   end;
  767. end;
  768. {$ELSE}
  769. function ContinueDebugEvent; external kernel32 name 'ContinueDebugEvent';
  770. {$ENDIF DYNAMIC_LINK}
  771. {$IFDEF DYNAMIC_LINK}
  772. var
  773.   _DebugActiveProcess: Pointer;
  774. function DebugActiveProcess;
  775. begin
  776.   GetProcedureAddress(_DebugActiveProcess, kernel32, 'DebugActiveProcess');
  777.   asm
  778.     mov esp, ebp
  779.     pop ebp
  780.     jmp [_DebugActiveProcess]
  781.   end;
  782. end;
  783. {$ELSE}
  784. function DebugActiveProcess; external kernel32 name 'DebugActiveProcess';
  785. {$ENDIF DYNAMIC_LINK}
  786. {$IFDEF DYNAMIC_LINK}
  787. var
  788.   _DebugActiveProcessStop: Pointer;
  789. function DebugActiveProcessStop;
  790. begin
  791.   GetProcedureAddress(_DebugActiveProcessStop, kernel32, 'DebugActiveProcessStop');
  792.   asm
  793.     mov esp, ebp
  794.     pop ebp
  795.     jmp [_DebugActiveProcessStop]
  796.   end;
  797. end;
  798. {$ELSE}
  799. function DebugActiveProcessStop; external kernel32 name 'DebugActiveProcessStop';
  800. {$ENDIF DYNAMIC_LINK}
  801. {$IFDEF DYNAMIC_LINK}
  802. var
  803.   _DebugSetProcessKillOnExit: Pointer;
  804. function DebugSetProcessKillOnExit;
  805. begin
  806.   GetProcedureAddress(_DebugSetProcessKillOnExit, kernel32, 'DebugSetProcessKillOnExit');
  807.   asm
  808.     mov esp, ebp
  809.     pop ebp
  810.     jmp [_DebugSetProcessKillOnExit]
  811.   end;
  812. end;
  813. {$ELSE}
  814. function DebugSetProcessKillOnExit; external kernel32 name 'DebugSetProcessKillOnExit';
  815. {$ENDIF DYNAMIC_LINK}
  816. {$IFDEF DYNAMIC_LINK}
  817. var
  818.   _DebugBreakProcess: Pointer;
  819. function DebugBreakProcess;
  820. begin
  821.   GetProcedureAddress(_DebugBreakProcess, kernel32, 'DebugBreakProcess');
  822.   asm
  823.     mov esp, ebp
  824.     pop ebp
  825.     jmp [_DebugBreakProcess]
  826.   end;
  827. end;
  828. {$ELSE}
  829. function DebugBreakProcess; external kernel32 name 'DebugBreakProcess';
  830. {$ENDIF DYNAMIC_LINK}
  831. {$IFDEF DYNAMIC_LINK}
  832. var
  833.   _InitializeCriticalSection: Pointer;
  834. procedure InitializeCriticalSection;
  835. begin
  836.   GetProcedureAddress(_InitializeCriticalSection, kernel32, 'InitializeCriticalSection');
  837.   asm
  838.     mov esp, ebp
  839.     pop ebp
  840.     jmp [_InitializeCriticalSection]
  841.   end;
  842. end;
  843. {$ELSE}
  844. procedure InitializeCriticalSection; external kernel32 name 'InitializeCriticalSection';
  845. {$ENDIF DYNAMIC_LINK}
  846. {$IFDEF DYNAMIC_LINK}
  847. var
  848.   _EnterCriticalSection: Pointer;
  849. procedure EnterCriticalSection;
  850. begin
  851.   GetProcedureAddress(_EnterCriticalSection, kernel32, 'EnterCriticalSection');
  852.   asm
  853.     mov esp, ebp
  854.     pop ebp
  855.     jmp [_EnterCriticalSection]
  856.   end;
  857. end;
  858. {$ELSE}
  859. procedure EnterCriticalSection; external kernel32 name 'EnterCriticalSection';
  860. {$ENDIF DYNAMIC_LINK}
  861. {$IFDEF DYNAMIC_LINK}
  862. var
  863.   _LeaveCriticalSection: Pointer;
  864. procedure LeaveCriticalSection;
  865. begin
  866.   GetProcedureAddress(_LeaveCriticalSection, kernel32, 'LeaveCriticalSection');
  867.   asm
  868.     mov esp, ebp
  869.     pop ebp
  870.     jmp [_LeaveCriticalSection]
  871.   end;
  872. end;
  873. {$ELSE}
  874. procedure LeaveCriticalSection; external kernel32 name 'LeaveCriticalSection';
  875. {$ENDIF DYNAMIC_LINK}
  876. {$IFDEF DYNAMIC_LINK}
  877. var
  878.   _InitCritSectAndSpinCount: Pointer;
  879. function InitializeCriticalSectionAndSpinCount;
  880. begin
  881.   GetProcedureAddress(_InitCritSectAndSpinCount, kernel32, 'InitializeCriticalSectionAndSpinCount');
  882.   asm
  883.     mov esp, ebp
  884.     pop ebp
  885.     jmp [_InitCritSectAndSpinCount]
  886.   end;
  887. end;
  888. {$ELSE}
  889. function InitializeCriticalSectionAndSpinCount; external kernel32 name 'InitializeCriticalSectionAndSpinCount';
  890. {$ENDIF DYNAMIC_LINK}
  891. {$IFDEF DYNAMIC_LINK}
  892. var
  893.   _SetCriticalSectionSpinCount: Pointer;
  894. function SetCriticalSectionSpinCount;
  895. begin
  896.   GetProcedureAddress(_SetCriticalSectionSpinCount, kernel32, 'SetCriticalSectionSpinCount');
  897.   asm
  898.     mov esp, ebp
  899.     pop ebp
  900.     jmp [_SetCriticalSectionSpinCount]
  901.   end;
  902. end;
  903. {$ELSE}
  904. function SetCriticalSectionSpinCount; external kernel32 name 'SetCriticalSectionSpinCount';
  905. {$ENDIF DYNAMIC_LINK}
  906. {$IFDEF DYNAMIC_LINK}
  907. var
  908.   _TryEnterCriticalSection: Pointer;
  909. function TryEnterCriticalSection;
  910. begin
  911.   GetProcedureAddress(_TryEnterCriticalSection, kernel32, 'TryEnterCriticalSection');
  912.   asm
  913.     mov esp, ebp
  914.     pop ebp
  915.     jmp [_TryEnterCriticalSection]
  916.   end;
  917. end;
  918. {$ELSE}
  919. function TryEnterCriticalSection; external kernel32 name 'TryEnterCriticalSection';
  920. {$ENDIF DYNAMIC_LINK}
  921. {$IFDEF DYNAMIC_LINK}
  922. var
  923.   _DeleteCriticalSection: Pointer;
  924. procedure DeleteCriticalSection;
  925. begin
  926.   GetProcedureAddress(_DeleteCriticalSection, kernel32, 'DeleteCriticalSection');
  927.   asm
  928.     mov esp, ebp
  929.     pop ebp
  930.     jmp [_DeleteCriticalSection]
  931.   end;
  932. end;
  933. {$ELSE}
  934. procedure DeleteCriticalSection; external kernel32 name 'DeleteCriticalSection';
  935. {$ENDIF DYNAMIC_LINK}
  936. {$IFDEF DYNAMIC_LINK}
  937. var
  938.   _SetEvent: Pointer;
  939. function SetEvent;
  940. begin
  941.   GetProcedureAddress(_SetEvent, kernel32, 'SetEvent');
  942.   asm
  943.     mov esp, ebp
  944.     pop ebp
  945.     jmp [_SetEvent]
  946.   end;
  947. end;
  948. {$ELSE}
  949. function SetEvent; external kernel32 name 'SetEvent';
  950. {$ENDIF DYNAMIC_LINK}
  951. {$IFDEF DYNAMIC_LINK}
  952. var
  953.   _ResetEvent: Pointer;
  954. function ResetEvent;
  955. begin
  956.   GetProcedureAddress(_ResetEvent, kernel32, 'ResetEvent');
  957.   asm
  958.     mov esp, ebp
  959.     pop ebp
  960.     jmp [_ResetEvent]
  961.   end;
  962. end;
  963. {$ELSE}
  964. function ResetEvent; external kernel32 name 'ResetEvent';
  965. {$ENDIF DYNAMIC_LINK}
  966. {$IFDEF DYNAMIC_LINK}
  967. var
  968.   _PulseEvent: Pointer;
  969. function PulseEvent;
  970. begin
  971.   GetProcedureAddress(_PulseEvent, kernel32, 'PulseEvent');
  972.   asm
  973.     mov esp, ebp
  974.     pop ebp
  975.     jmp [_PulseEvent]
  976.   end;
  977. end;
  978. {$ELSE}
  979. function PulseEvent; external kernel32 name 'PulseEvent';
  980. {$ENDIF DYNAMIC_LINK}
  981. {$IFDEF DYNAMIC_LINK}
  982. var
  983.   _ReleaseSemaphore: Pointer;
  984. function ReleaseSemaphore;
  985. begin
  986.   GetProcedureAddress(_ReleaseSemaphore, kernel32, 'ReleaseSemaphore');
  987.   asm
  988.     mov esp, ebp
  989.     pop ebp
  990.     jmp [_ReleaseSemaphore]
  991.   end;
  992. end;
  993. {$ELSE}
  994. function ReleaseSemaphore; external kernel32 name 'ReleaseSemaphore';
  995. {$ENDIF DYNAMIC_LINK}
  996. {$IFDEF DYNAMIC_LINK}
  997. var
  998.   _ReleaseMutex: Pointer;
  999. function ReleaseMutex;
  1000. begin
  1001.   GetProcedureAddress(_ReleaseMutex, kernel32, 'ReleaseMutex');
  1002.   asm
  1003.     mov esp, ebp
  1004.     pop ebp
  1005.     jmp [_ReleaseMutex]
  1006.   end;
  1007. end;
  1008. {$ELSE}
  1009. function ReleaseMutex; external kernel32 name 'ReleaseMutex';
  1010. {$ENDIF DYNAMIC_LINK}
  1011. {$IFDEF DYNAMIC_LINK}
  1012. var
  1013.   _WaitForSingleObject: Pointer;
  1014. function WaitForSingleObject;
  1015. begin
  1016.   GetProcedureAddress(_WaitForSingleObject, kernel32, 'WaitForSingleObject');
  1017.   asm
  1018.     mov esp, ebp
  1019.     pop ebp
  1020.     jmp [_WaitForSingleObject]
  1021.   end;
  1022. end;
  1023. {$ELSE}
  1024. function WaitForSingleObject; external kernel32 name 'WaitForSingleObject';
  1025. {$ENDIF DYNAMIC_LINK}
  1026. {$IFDEF DYNAMIC_LINK}
  1027. var
  1028.   _WaitForMultipleObjects: Pointer;
  1029. function WaitForMultipleObjects;
  1030. begin
  1031.   GetProcedureAddress(_WaitForMultipleObjects, kernel32, 'WaitForMultipleObjects');
  1032.   asm
  1033.     mov esp, ebp
  1034.     pop ebp
  1035.     jmp [_WaitForMultipleObjects]
  1036.   end;
  1037. end;
  1038. {$ELSE}
  1039. function WaitForMultipleObjects; external kernel32 name 'WaitForMultipleObjects';
  1040. {$ENDIF DYNAMIC_LINK}
  1041. {$IFDEF DYNAMIC_LINK}
  1042. var
  1043.   _Sleep: Pointer;
  1044. procedure Sleep;
  1045. begin
  1046.   GetProcedureAddress(_Sleep, kernel32, 'Sleep');
  1047.   asm
  1048.     mov esp, ebp
  1049.     pop ebp
  1050.     jmp [_Sleep]
  1051.   end;
  1052. end;
  1053. {$ELSE}
  1054. procedure Sleep; external kernel32 name 'Sleep';
  1055. {$ENDIF DYNAMIC_LINK}
  1056. {$IFDEF DYNAMIC_LINK}
  1057. var
  1058.   _LoadResource: Pointer;
  1059. function LoadResource;
  1060. begin
  1061.   GetProcedureAddress(_LoadResource, kernel32, 'LoadResource');
  1062.   asm
  1063.     mov esp, ebp
  1064.     pop ebp
  1065.     jmp [_LoadResource]
  1066.   end;
  1067. end;
  1068. {$ELSE}
  1069. function LoadResource; external kernel32 name 'LoadResource';
  1070. {$ENDIF DYNAMIC_LINK}
  1071. {$IFDEF DYNAMIC_LINK}
  1072. var
  1073.   _SizeofResource: Pointer;
  1074. function SizeofResource;
  1075. begin
  1076.   GetProcedureAddress(_SizeofResource, kernel32, 'SizeofResource');
  1077.   asm
  1078.     mov esp, ebp
  1079.     pop ebp
  1080.     jmp [_SizeofResource]
  1081.   end;
  1082. end;
  1083. {$ELSE}
  1084. function SizeofResource; external kernel32 name 'SizeofResource';
  1085. {$ENDIF DYNAMIC_LINK}
  1086. {$IFDEF DYNAMIC_LINK}
  1087. var
  1088.   _GlobalDeleteAtom: Pointer;
  1089. function GlobalDeleteAtom;
  1090. begin
  1091.   GetProcedureAddress(_GlobalDeleteAtom, kernel32, 'GlobalDeleteAtom');
  1092.   asm
  1093.     mov esp, ebp
  1094.     pop ebp
  1095.     jmp [_GlobalDeleteAtom]
  1096.   end;
  1097. end;
  1098. {$ELSE}
  1099. function GlobalDeleteAtom; external kernel32 name 'GlobalDeleteAtom';
  1100. {$ENDIF DYNAMIC_LINK}
  1101. {$IFDEF DYNAMIC_LINK}
  1102. var
  1103.   _InitAtomTable: Pointer;
  1104. function InitAtomTable;
  1105. begin
  1106.   GetProcedureAddress(_InitAtomTable, kernel32, 'InitAtomTable');
  1107.   asm
  1108.     mov esp, ebp
  1109.     pop ebp
  1110.     jmp [_InitAtomTable]
  1111.   end;
  1112. end;
  1113. {$ELSE}
  1114. function InitAtomTable; external kernel32 name 'InitAtomTable';
  1115. {$ENDIF DYNAMIC_LINK}
  1116. {$IFDEF DYNAMIC_LINK}
  1117. var
  1118.   _DeleteAtom: Pointer;
  1119. function DeleteAtom;
  1120. begin
  1121.   GetProcedureAddress(_DeleteAtom, kernel32, 'DeleteAtom');
  1122.   asm
  1123.     mov esp, ebp
  1124.     pop ebp
  1125.     jmp [_DeleteAtom]
  1126.   end;
  1127. end;
  1128. {$ELSE}
  1129. function DeleteAtom; external kernel32 name 'DeleteAtom';
  1130. {$ENDIF DYNAMIC_LINK}
  1131. {$IFDEF DYNAMIC_LINK}
  1132. var
  1133.   _SetHandleCount: Pointer;
  1134. function SetHandleCount;
  1135. begin
  1136.   GetProcedureAddress(_SetHandleCount, kernel32, 'SetHandleCount');
  1137.   asm
  1138.     mov esp, ebp
  1139.     pop ebp
  1140.     jmp [_SetHandleCount]
  1141.   end;
  1142. end;
  1143. {$ELSE}
  1144. function SetHandleCount; external kernel32 name 'SetHandleCount';
  1145. {$ENDIF DYNAMIC_LINK}
  1146. {$IFDEF DYNAMIC_LINK}
  1147. var
  1148.   _GetLogicalDrives: Pointer;
  1149. function GetLogicalDrives;
  1150. begin
  1151.   GetProcedureAddress(_GetLogicalDrives, kernel32, 'GetLogicalDrives');
  1152.   asm
  1153.     mov esp, ebp
  1154.     pop ebp
  1155.     jmp [_GetLogicalDrives]
  1156.   end;
  1157. end;
  1158. {$ELSE}
  1159. function GetLogicalDrives; external kernel32 name 'GetLogicalDrives';
  1160. {$ENDIF DYNAMIC_LINK}
  1161. {$IFDEF DYNAMIC_LINK}
  1162. var
  1163.   _LockFile: Pointer;
  1164. function LockFile;
  1165. begin
  1166.   GetProcedureAddress(_LockFile, kernel32, 'LockFile');
  1167.   asm
  1168.     mov esp, ebp
  1169.     pop ebp
  1170.     jmp [_LockFile]
  1171.   end;
  1172. end;
  1173. {$ELSE}
  1174. function LockFile; external kernel32 name 'LockFile';
  1175. {$ENDIF DYNAMIC_LINK}
  1176. {$IFDEF DYNAMIC_LINK}
  1177. var
  1178.   _UnlockFile: Pointer;
  1179. function UnlockFile;
  1180. begin
  1181.   GetProcedureAddress(_UnlockFile, kernel32, 'UnlockFile');
  1182.   asm
  1183.     mov esp, ebp
  1184.     pop ebp
  1185.     jmp [_UnlockFile]
  1186.   end;
  1187. end;
  1188. {$ELSE}
  1189. function UnlockFile; external kernel32 name 'UnlockFile';
  1190. {$ENDIF DYNAMIC_LINK}
  1191. {$IFDEF DYNAMIC_LINK}
  1192. var
  1193.   _LockFileEx: Pointer;
  1194. function LockFileEx;
  1195. begin
  1196.   GetProcedureAddress(_LockFileEx, kernel32, 'LockFileEx');
  1197.   asm
  1198.     mov esp, ebp
  1199.     pop ebp
  1200.     jmp [_LockFileEx]
  1201.   end;
  1202. end;
  1203. {$ELSE}
  1204. function LockFileEx; external kernel32 name 'LockFileEx';
  1205. {$ENDIF DYNAMIC_LINK}
  1206. {$IFDEF DYNAMIC_LINK}
  1207. var
  1208.   _UnlockFileEx: Pointer;
  1209. function UnlockFileEx;
  1210. begin
  1211.   GetProcedureAddress(_UnlockFileEx, kernel32, 'UnlockFileEx');
  1212.   asm
  1213.     mov esp, ebp
  1214.     pop ebp
  1215.     jmp [_UnlockFileEx]
  1216.   end;
  1217. end;
  1218. {$ELSE}
  1219. function UnlockFileEx; external kernel32 name 'UnlockFileEx';
  1220. {$ENDIF DYNAMIC_LINK}
  1221. {$IFDEF DYNAMIC_LINK}
  1222. var
  1223.   _GetFileInformationByHandle: Pointer;
  1224. function GetFileInformationByHandle;
  1225. begin
  1226.   GetProcedureAddress(_GetFileInformationByHandle, kernel32, 'GetFileInformationByHandle');
  1227.   asm
  1228.     mov esp, ebp
  1229.     pop ebp
  1230.     jmp [_GetFileInformationByHandle]
  1231.   end;
  1232. end;
  1233. {$ELSE}
  1234. function GetFileInformationByHandle; external kernel32 name 'GetFileInformationByHandle';
  1235. {$ENDIF DYNAMIC_LINK}
  1236. {$IFDEF DYNAMIC_LINK}
  1237. var
  1238.   _GetFileType: Pointer;
  1239. function GetFileType;
  1240. begin
  1241.   GetProcedureAddress(_GetFileType, kernel32, 'GetFileType');
  1242.   asm
  1243.     mov esp, ebp
  1244.     pop ebp
  1245.     jmp [_GetFileType]
  1246.   end;
  1247. end;
  1248. {$ELSE}
  1249. function GetFileType; external kernel32 name 'GetFileType';
  1250. {$ENDIF DYNAMIC_LINK}
  1251. {$IFDEF DYNAMIC_LINK}
  1252. var
  1253.   _GetFileSize: Pointer;
  1254. function GetFileSize;
  1255. begin
  1256.   GetProcedureAddress(_GetFileSize, kernel32, 'GetFileSize');
  1257.   asm
  1258.     mov esp, ebp
  1259.     pop ebp
  1260.     jmp [_GetFileSize]
  1261.   end;
  1262. end;
  1263. {$ELSE}
  1264. function GetFileSize; external kernel32 name 'GetFileSize';
  1265. {$ENDIF DYNAMIC_LINK}
  1266. {$IFDEF DYNAMIC_LINK}
  1267. var
  1268.   _GetFileSizeEx: Pointer;
  1269. function GetFileSizeEx;
  1270. begin
  1271.   GetProcedureAddress(_GetFileSizeEx, kernel32, 'GetFileSizeEx');
  1272.   asm
  1273.     mov esp, ebp
  1274.     pop ebp
  1275.     jmp [_GetFileSizeEx]
  1276.   end;
  1277. end;
  1278. {$ELSE}
  1279. function GetFileSizeEx; external kernel32 name 'GetFileSizeEx';
  1280. {$ENDIF DYNAMIC_LINK}
  1281. {$IFDEF DYNAMIC_LINK}
  1282. var
  1283.   _GetStdHandle: Pointer;
  1284. function GetStdHandle;
  1285. begin
  1286.   GetProcedureAddress(_GetStdHandle, kernel32, 'GetStdHandle');
  1287.   asm
  1288.     mov esp, ebp
  1289.     pop ebp
  1290.     jmp [_GetStdHandle]
  1291.   end;
  1292. end;
  1293. {$ELSE}
  1294. function GetStdHandle; external kernel32 name 'GetStdHandle';
  1295. {$ENDIF DYNAMIC_LINK}
  1296. {$IFDEF DYNAMIC_LINK}
  1297. var
  1298.   _SetStdHandle: Pointer;
  1299. function SetStdHandle;
  1300. begin
  1301.   GetProcedureAddress(_SetStdHandle, kernel32, 'SetStdHandle');
  1302.   asm
  1303.     mov esp, ebp
  1304.     pop ebp
  1305.     jmp [_SetStdHandle]
  1306.   end;
  1307. end;
  1308. {$ELSE}
  1309. function SetStdHandle; external kernel32 name 'SetStdHandle';
  1310. {$ENDIF DYNAMIC_LINK}
  1311. {$IFDEF DYNAMIC_LINK}
  1312. var
  1313.   _WriteFile: Pointer;
  1314. function WriteFile;
  1315. begin
  1316.   GetProcedureAddress(_WriteFile, kernel32, 'WriteFile');
  1317.   asm
  1318.     mov esp, ebp
  1319.     pop ebp
  1320.     jmp [_WriteFile]
  1321.   end;
  1322. end;
  1323. {$ELSE}
  1324. function WriteFile; external kernel32 name 'WriteFile';
  1325. {$ENDIF DYNAMIC_LINK}
  1326. {$IFDEF DYNAMIC_LINK}
  1327. var
  1328.   _ReadFile: Pointer;
  1329. function ReadFile;
  1330. begin
  1331.   GetProcedureAddress(_ReadFile, kernel32, 'ReadFile');
  1332.   asm
  1333.     mov esp, ebp
  1334.     pop ebp
  1335.     jmp [_ReadFile]
  1336.   end;
  1337. end;
  1338. {$ELSE}
  1339. function ReadFile; external kernel32 name 'ReadFile';
  1340. {$ENDIF DYNAMIC_LINK}
  1341. {$IFDEF DYNAMIC_LINK}
  1342. var
  1343.   _FlushFileBuffers: Pointer;
  1344. function FlushFileBuffers;
  1345. begin
  1346.   GetProcedureAddress(_FlushFileBuffers, kernel32, 'FlushFileBuffers');
  1347.   asm
  1348.     mov esp, ebp
  1349.     pop ebp
  1350.     jmp [_FlushFileBuffers]
  1351.   end;
  1352. end;
  1353. {$ELSE}
  1354. function FlushFileBuffers; external kernel32 name 'FlushFileBuffers';
  1355. {$ENDIF DYNAMIC_LINK}
  1356. {$IFDEF DYNAMIC_LINK}
  1357. var
  1358.   _DeviceIoControl: Pointer;
  1359. function DeviceIoControl;
  1360. begin
  1361.   GetProcedureAddress(_DeviceIoControl, kernel32, 'DeviceIoControl');
  1362.   asm
  1363.     mov esp, ebp
  1364.     pop ebp
  1365.     jmp [_DeviceIoControl]
  1366.   end;
  1367. end;
  1368. {$ELSE}
  1369. function DeviceIoControl; external kernel32 name 'DeviceIoControl';
  1370. {$ENDIF DYNAMIC_LINK}
  1371. {$IFDEF DYNAMIC_LINK}
  1372. var
  1373.   _RequestDeviceWakeup: Pointer;
  1374. function RequestDeviceWakeup;
  1375. begin
  1376.   GetProcedureAddress(_RequestDeviceWakeup, kernel32, 'RequestDeviceWakeup');
  1377.   asm
  1378.     mov esp, ebp
  1379.     pop ebp
  1380.     jmp [_RequestDeviceWakeup]
  1381.   end;
  1382. end;
  1383. {$ELSE}
  1384. function RequestDeviceWakeup; external kernel32 name 'RequestDeviceWakeup';
  1385. {$ENDIF DYNAMIC_LINK}
  1386. {$IFDEF DYNAMIC_LINK}
  1387. var
  1388.   _CancelDeviceWakeupRequest: Pointer;
  1389. function CancelDeviceWakeupRequest;
  1390. begin
  1391.   GetProcedureAddress(_CancelDeviceWakeupRequest, kernel32, 'CancelDeviceWakeupRequest');
  1392.   asm
  1393.     mov esp, ebp
  1394.     pop ebp
  1395.     jmp [_CancelDeviceWakeupRequest]
  1396.   end;
  1397. end;
  1398. {$ELSE}
  1399. function CancelDeviceWakeupRequest; external kernel32 name 'CancelDeviceWakeupRequest';
  1400. {$ENDIF DYNAMIC_LINK}
  1401. {$IFDEF DYNAMIC_LINK}
  1402. var
  1403.   _GetDevicePowerState: Pointer;
  1404. function GetDevicePowerState;
  1405. begin
  1406.   GetProcedureAddress(_GetDevicePowerState, kernel32, 'GetDevicePowerState');
  1407.   asm
  1408.     mov esp, ebp
  1409.     pop ebp
  1410.     jmp [_GetDevicePowerState]
  1411.   end;
  1412. end;
  1413. {$ELSE}
  1414. function GetDevicePowerState; external kernel32 name 'GetDevicePowerState';
  1415. {$ENDIF DYNAMIC_LINK}
  1416. {$IFDEF DYNAMIC_LINK}
  1417. var
  1418.   _SetMessageWaitingIndicator: Pointer;
  1419. function SetMessageWaitingIndicator;
  1420. begin
  1421.   GetProcedureAddress(_SetMessageWaitingIndicator, kernel32, 'SetMessageWaitingIndicator');
  1422.   asm
  1423.     mov esp, ebp
  1424.     pop ebp
  1425.     jmp [_SetMessageWaitingIndicator]
  1426.   end;
  1427. end;
  1428. {$ELSE}
  1429. function SetMessageWaitingIndicator; external kernel32 name 'SetMessageWaitingIndicator';
  1430. {$ENDIF DYNAMIC_LINK}
  1431. {$IFDEF DYNAMIC_LINK}
  1432. var
  1433.   _SetEndOfFile: Pointer;
  1434. function SetEndOfFile;
  1435. begin
  1436.   GetProcedureAddress(_SetEndOfFile, kernel32, 'SetEndOfFile');
  1437.   asm
  1438.     mov esp, ebp
  1439.     pop ebp
  1440.     jmp [_SetEndOfFile]
  1441.   end;
  1442. end;
  1443. {$ELSE}
  1444. function SetEndOfFile; external kernel32 name 'SetEndOfFile';
  1445. {$ENDIF DYNAMIC_LINK}
  1446. {$IFDEF DYNAMIC_LINK}
  1447. var
  1448.   _SetFilePointer: Pointer;
  1449. function SetFilePointer;
  1450. begin
  1451.   GetProcedureAddress(_SetFilePointer, kernel32, 'SetFilePointer');
  1452.   asm
  1453.     mov esp, ebp
  1454.     pop ebp
  1455.     jmp [_SetFilePointer]
  1456.   end;
  1457. end;
  1458. {$ELSE}
  1459. function SetFilePointer; external kernel32 name 'SetFilePointer';
  1460. {$ENDIF DYNAMIC_LINK}
  1461. {$IFDEF DYNAMIC_LINK}
  1462. var
  1463.   _SetFilePointerEx: Pointer;
  1464. function SetFilePointerEx;
  1465. begin
  1466.   GetProcedureAddress(_SetFilePointerEx, kernel32, 'SetFilePointerEx');
  1467.   asm
  1468.     mov esp, ebp
  1469.     pop ebp
  1470.     jmp [_SetFilePointerEx]
  1471.   end;
  1472. end;
  1473. {$ELSE}
  1474. function SetFilePointerEx; external kernel32 name 'SetFilePointerEx';
  1475. {$ENDIF DYNAMIC_LINK}
  1476. {$IFDEF DYNAMIC_LINK}
  1477. var
  1478.   _FindClose: Pointer;
  1479. function FindClose;
  1480. begin
  1481.   GetProcedureAddress(_FindClose, kernel32, 'FindClose');
  1482.   asm
  1483.     mov esp, ebp
  1484.     pop ebp
  1485.     jmp [_FindClose]
  1486.   end;
  1487. end;
  1488. {$ELSE}
  1489. function FindClose; external kernel32 name 'FindClose';
  1490. {$ENDIF DYNAMIC_LINK}
  1491. {$IFDEF DYNAMIC_LINK}
  1492. var
  1493.   _GetFileTime: Pointer;
  1494. function GetFileTime;
  1495. begin
  1496.   GetProcedureAddress(_GetFileTime, kernel32, 'GetFileTime');
  1497.   asm
  1498.     mov esp, ebp
  1499.     pop ebp
  1500.     jmp [_GetFileTime]
  1501.   end;
  1502. end;
  1503. {$ELSE}
  1504. function GetFileTime; external kernel32 name 'GetFileTime';
  1505. {$ENDIF DYNAMIC_LINK}
  1506. {$IFDEF DYNAMIC_LINK}
  1507. var
  1508.   _SetFileTime: Pointer;
  1509. function SetFileTime;
  1510. begin
  1511.   GetProcedureAddress(_SetFileTime, kernel32, 'SetFileTime');
  1512.   asm
  1513.     mov esp, ebp
  1514.     pop ebp
  1515.     jmp [_SetFileTime]
  1516.   end;
  1517. end;
  1518. {$ELSE}
  1519. function SetFileTime; external kernel32 name 'SetFileTime';
  1520. {$ENDIF DYNAMIC_LINK}
  1521. {$IFDEF DYNAMIC_LINK}
  1522. var
  1523.   _SetFileValidData: Pointer;
  1524. function SetFileValidData;
  1525. begin
  1526.   GetProcedureAddress(_SetFileValidData, kernel32, 'SetFileValidData');
  1527.   asm
  1528.     mov esp, ebp
  1529.     pop ebp
  1530.     jmp [_SetFileValidData]
  1531.   end;
  1532. end;
  1533. {$ELSE}
  1534. function SetFileValidData; external kernel32 name 'SetFileValidData';
  1535. {$ENDIF DYNAMIC_LINK}
  1536. {$IFDEF DYNAMIC_LINK}
  1537. var
  1538.   _SetFileShortNameA: Pointer;
  1539. function SetFileShortNameA;
  1540. begin
  1541.   GetProcedureAddress(_SetFileShortNameA, kernel32, 'SetFileShortNameA');
  1542.   asm
  1543.     mov esp, ebp
  1544.     pop ebp
  1545.     jmp [_SetFileShortNameA]
  1546.   end;
  1547. end;
  1548. {$ELSE}
  1549. function SetFileShortNameA; external kernel32 name 'SetFileShortNameA';
  1550. {$ENDIF DYNAMIC_LINK}
  1551. {$IFDEF DYNAMIC_LINK}
  1552. var
  1553.   _SetFileShortNameW: Pointer;
  1554. function SetFileShortNameW;
  1555. begin
  1556.   GetProcedureAddress(_SetFileShortNameW, kernel32, 'SetFileShortNameW');
  1557.   asm
  1558.     mov esp, ebp
  1559.     pop ebp
  1560.     jmp [_SetFileShortNameW]
  1561.   end;
  1562. end;
  1563. {$ELSE}
  1564. function SetFileShortNameW; external kernel32 name 'SetFileShortNameW';
  1565. {$ENDIF DYNAMIC_LINK}
  1566. {$IFDEF UNICODE}
  1567. {$IFDEF DYNAMIC_LINK}
  1568. var
  1569.   _SetFileShortName: Pointer;
  1570. function SetFileShortName;
  1571. begin
  1572.   GetProcedureAddress(_SetFileShortName, kernel32, 'SetFileShortNameW');
  1573.   asm
  1574.     mov esp, ebp
  1575.     pop ebp
  1576.     jmp [_SetFileShortName]
  1577.   end;
  1578. end;
  1579. {$ELSE}
  1580. function SetFileShortName; external kernel32 name 'SetFileShortNameW';
  1581. {$ENDIF DYNAMIC_LINK}
  1582. {$ELSE}
  1583. {$IFDEF DYNAMIC_LINK}
  1584. var
  1585.   _SetFileShortName: Pointer;
  1586. function SetFileShortName;
  1587. begin
  1588.   GetProcedureAddress(_SetFileShortName, kernel32, 'SetFileShortNameA');
  1589.   asm
  1590.     mov esp, ebp
  1591.     pop ebp
  1592.     jmp [_SetFileShortName]
  1593.   end;
  1594. end;
  1595. {$ELSE}
  1596. function SetFileShortName; external kernel32 name 'SetFileShortNameA';
  1597. {$ENDIF DYNAMIC_LINK}
  1598. {$ENDIF}
  1599. {$IFDEF DYNAMIC_LINK}
  1600. var
  1601.   _CloseHandle: Pointer;
  1602. function CloseHandle;
  1603. begin
  1604.   GetProcedureAddress(_CloseHandle, kernel32, 'CloseHandle');
  1605.   asm
  1606.     mov esp, ebp
  1607.     pop ebp
  1608.     jmp [_CloseHandle]
  1609.   end;
  1610. end;
  1611. {$ELSE}
  1612. function CloseHandle; external kernel32 name 'CloseHandle';
  1613. {$ENDIF DYNAMIC_LINK}
  1614. {$IFDEF DYNAMIC_LINK}
  1615. var
  1616.   _DuplicateHandle: Pointer;
  1617. function DuplicateHandle;
  1618. begin
  1619.   GetProcedureAddress(_DuplicateHandle, kernel32, 'DuplicateHandle');
  1620.   asm
  1621.     mov esp, ebp
  1622.     pop ebp
  1623.     jmp [_DuplicateHandle]
  1624.   end;
  1625. end;
  1626. {$ELSE}
  1627. function DuplicateHandle; external kernel32 name 'DuplicateHandle';
  1628. {$ENDIF DYNAMIC_LINK}
  1629. {$IFDEF DYNAMIC_LINK}
  1630. var
  1631.   _GetHandleInformation: Pointer;
  1632. function GetHandleInformation;
  1633. begin
  1634.   GetProcedureAddress(_GetHandleInformation, kernel32, 'GetHandleInformation');
  1635.   asm
  1636.     mov esp, ebp
  1637.     pop ebp
  1638.     jmp [_GetHandleInformation]
  1639.   end;
  1640. end;
  1641. {$ELSE}
  1642. function GetHandleInformation; external kernel32 name 'GetHandleInformation';
  1643. {$ENDIF DYNAMIC_LINK}
  1644. {$IFDEF DYNAMIC_LINK}
  1645. var
  1646.   _SetHandleInformation: Pointer;
  1647. function SetHandleInformation;
  1648. begin
  1649.   GetProcedureAddress(_SetHandleInformation, kernel32, 'SetHandleInformation');
  1650.   asm
  1651.     mov esp, ebp
  1652.     pop ebp
  1653.     jmp [_SetHandleInformation]
  1654.   end;
  1655. end;
  1656. {$ELSE}
  1657. function SetHandleInformation; external kernel32 name 'SetHandleInformation';
  1658. {$ENDIF DYNAMIC_LINK}
  1659. {$IFDEF DYNAMIC_LINK}
  1660. var
  1661.   _LoadModule: Pointer;
  1662. function LoadModule;
  1663. begin
  1664.   GetProcedureAddress(_LoadModule, kernel32, 'LoadModule');
  1665.   asm
  1666.     mov esp, ebp
  1667.     pop ebp
  1668.     jmp [_LoadModule]
  1669.   end;
  1670. end;
  1671. {$ELSE}
  1672. function LoadModule; external kernel32 name 'LoadModule';
  1673. {$ENDIF DYNAMIC_LINK}
  1674. {$IFDEF DYNAMIC_LINK}
  1675. var
  1676.   _WinExec: Pointer;
  1677. function WinExec;
  1678. begin
  1679.   GetProcedureAddress(_WinExec, kernel32, 'WinExec');
  1680.   asm
  1681.     mov esp, ebp
  1682.     pop ebp
  1683.     jmp [_WinExec]
  1684.   end;
  1685. end;
  1686. {$ELSE}
  1687. function WinExec; external kernel32 name 'WinExec';
  1688. {$ENDIF DYNAMIC_LINK}
  1689. {$IFDEF DYNAMIC_LINK}
  1690. var
  1691.   _ClearCommBreak: Pointer;
  1692. function ClearCommBreak;
  1693. begin
  1694.   GetProcedureAddress(_ClearCommBreak, kernel32, 'ClearCommBreak');
  1695.   asm
  1696.     mov esp, ebp
  1697.     pop ebp
  1698.     jmp [_ClearCommBreak]
  1699.   end;
  1700. end;
  1701. {$ELSE}
  1702. function ClearCommBreak; external kernel32 name 'ClearCommBreak';
  1703. {$ENDIF DYNAMIC_LINK}
  1704. {$IFDEF DYNAMIC_LINK}
  1705. var
  1706.   _ClearCommError: Pointer;
  1707. function ClearCommError;
  1708. begin
  1709.   GetProcedureAddress(_ClearCommError, kernel32, 'ClearCommError');
  1710.   asm
  1711.     mov esp, ebp
  1712.     pop ebp
  1713.     jmp [_ClearCommError]
  1714.   end;
  1715. end;
  1716. {$ELSE}
  1717. function ClearCommError; external kernel32 name 'ClearCommError';
  1718. {$ENDIF DYNAMIC_LINK}
  1719. {$IFDEF DYNAMIC_LINK}
  1720. var
  1721.   _SetupComm: Pointer;
  1722. function SetupComm;
  1723. begin
  1724.   GetProcedureAddress(_SetupComm, kernel32, 'SetupComm');
  1725.   asm
  1726.     mov esp, ebp
  1727.     pop ebp
  1728.     jmp [_SetupComm]
  1729.   end;
  1730. end;
  1731. {$ELSE}
  1732. function SetupComm; external kernel32 name 'SetupComm';
  1733. {$ENDIF DYNAMIC_LINK}
  1734. {$IFDEF DYNAMIC_LINK}
  1735. var
  1736.   _EscapeCommFunction: Pointer;
  1737. function EscapeCommFunction;
  1738. begin
  1739.   GetProcedureAddress(_EscapeCommFunction, kernel32, 'EscapeCommFunction');
  1740.   asm
  1741.     mov esp, ebp
  1742.     pop ebp
  1743.     jmp [_EscapeCommFunction]
  1744.   end;
  1745. end;
  1746. {$ELSE}
  1747. function EscapeCommFunction; external kernel32 name 'EscapeCommFunction';
  1748. {$ENDIF DYNAMIC_LINK}
  1749. {$IFDEF DYNAMIC_LINK}
  1750. var
  1751.   _GetCommConfig: Pointer;
  1752. function GetCommConfig;
  1753. begin
  1754.   GetProcedureAddress(_GetCommConfig, kernel32, 'GetCommConfig');
  1755.   asm
  1756.     mov esp, ebp
  1757.     pop ebp
  1758.     jmp [_GetCommConfig]
  1759.   end;
  1760. end;
  1761. {$ELSE}
  1762. function GetCommConfig; external kernel32 name 'GetCommConfig';
  1763. {$ENDIF DYNAMIC_LINK}
  1764. {$IFDEF DYNAMIC_LINK}
  1765. var
  1766.   _GetCommMask: Pointer;
  1767. function GetCommMask;
  1768. begin
  1769.   GetProcedureAddress(_GetCommMask, kernel32, 'GetCommMask');
  1770.   asm
  1771.     mov esp, ebp
  1772.     pop ebp
  1773.     jmp [_GetCommMask]
  1774.   end;
  1775. end;
  1776. {$ELSE}
  1777. function GetCommMask; external kernel32 name 'GetCommMask';
  1778. {$ENDIF DYNAMIC_LINK}
  1779. {$IFDEF DYNAMIC_LINK}
  1780. var
  1781.   _GetCommProperties: Pointer;
  1782. function GetCommProperties;
  1783. begin
  1784.   GetProcedureAddress(_GetCommProperties, kernel32, 'GetCommProperties');
  1785.   asm
  1786.     mov esp, ebp
  1787.     pop ebp
  1788.     jmp [_GetCommProperties]
  1789.   end;
  1790. end;
  1791. {$ELSE}
  1792. function GetCommProperties; external kernel32 name 'GetCommProperties';
  1793. {$ENDIF DYNAMIC_LINK}
  1794. {$IFDEF DYNAMIC_LINK}
  1795. var
  1796.   _GetCommModemStatus: Pointer;
  1797. function GetCommModemStatus;
  1798. begin
  1799.   GetProcedureAddress(_GetCommModemStatus, kernel32, 'GetCommModemStatus');
  1800.   asm
  1801.     mov esp, ebp
  1802.     pop ebp
  1803.     jmp [_GetCommModemStatus]
  1804.   end;
  1805. end;
  1806. {$ELSE}
  1807. function GetCommModemStatus; external kernel32 name 'GetCommModemStatus';
  1808. {$ENDIF DYNAMIC_LINK}
  1809. {$IFDEF DYNAMIC_LINK}
  1810. var
  1811.   _GetCommState: Pointer;
  1812. function GetCommState;
  1813. begin
  1814.   GetProcedureAddress(_GetCommState, kernel32, 'GetCommState');
  1815.   asm
  1816.     mov esp, ebp
  1817.     pop ebp
  1818.     jmp [_GetCommState]
  1819.   end;
  1820. end;
  1821. {$ELSE}
  1822. function GetCommState; external kernel32 name 'GetCommState';
  1823. {$ENDIF DYNAMIC_LINK}
  1824. {$IFDEF DYNAMIC_LINK}
  1825. var
  1826.   _GetCommTimeouts: Pointer;
  1827. function GetCommTimeouts;
  1828. begin
  1829.   GetProcedureAddress(_GetCommTimeouts, kernel32, 'GetCommTimeouts');
  1830.   asm
  1831.     mov esp, ebp
  1832.     pop ebp
  1833.     jmp [_GetCommTimeouts]
  1834.   end;
  1835. end;
  1836. {$ELSE}
  1837. function GetCommTimeouts; external kernel32 name 'GetCommTimeouts';
  1838. {$ENDIF DYNAMIC_LINK}
  1839. {$IFDEF DYNAMIC_LINK}
  1840. var
  1841.   _PurgeComm: Pointer;
  1842. function PurgeComm;
  1843. begin
  1844.   GetProcedureAddress(_PurgeComm, kernel32, 'PurgeComm');
  1845.   asm
  1846.     mov esp, ebp
  1847.     pop ebp
  1848.     jmp [_PurgeComm]
  1849.   end;
  1850. end;
  1851. {$ELSE}
  1852. function PurgeComm; external kernel32 name 'PurgeComm';
  1853. {$ENDIF DYNAMIC_LINK}
  1854. {$IFDEF DYNAMIC_LINK}
  1855. var
  1856.   _SetCommBreak: Pointer;
  1857. function SetCommBreak;
  1858. begin
  1859.   GetProcedureAddress(_SetCommBreak, kernel32, 'SetCommBreak');
  1860.   asm
  1861.     mov esp, ebp
  1862.     pop ebp
  1863.     jmp [_SetCommBreak]
  1864.   end;
  1865. end;
  1866. {$ELSE}
  1867. function SetCommBreak; external kernel32 name 'SetCommBreak';
  1868. {$ENDIF DYNAMIC_LINK}
  1869. {$IFDEF DYNAMIC_LINK}
  1870. var
  1871.   _SetCommConfig: Pointer;
  1872. function SetCommConfig;
  1873. begin
  1874.   GetProcedureAddress(_SetCommConfig, kernel32, 'SetCommConfig');
  1875.   asm
  1876.     mov esp, ebp
  1877.     pop ebp
  1878.     jmp [_SetCommConfig]
  1879.   end;
  1880. end;
  1881. {$ELSE}
  1882. function SetCommConfig; external kernel32 name 'SetCommConfig';
  1883. {$ENDIF DYNAMIC_LINK}
  1884. {$IFDEF DYNAMIC_LINK}
  1885. var
  1886.   _SetCommMask: Pointer;
  1887. function SetCommMask;
  1888. begin
  1889.   GetProcedureAddress(_SetCommMask, kernel32, 'SetCommMask');
  1890.   asm
  1891.     mov esp, ebp
  1892.     pop ebp
  1893.     jmp [_SetCommMask]
  1894.   end;
  1895. end;
  1896. {$ELSE}
  1897. function SetCommMask; external kernel32 name 'SetCommMask';
  1898. {$ENDIF DYNAMIC_LINK}
  1899. {$IFDEF DYNAMIC_LINK}
  1900. var
  1901.   _SetCommState: Pointer;
  1902. function SetCommState;
  1903. begin
  1904.   GetProcedureAddress(_SetCommState, kernel32, 'SetCommState');
  1905.   asm
  1906.     mov esp, ebp
  1907.     pop ebp
  1908.     jmp [_SetCommState]
  1909.   end;
  1910. end;
  1911. {$ELSE}
  1912. function SetCommState; external kernel32 name 'SetCommState';
  1913. {$ENDIF DYNAMIC_LINK}
  1914. {$IFDEF DYNAMIC_LINK}
  1915. var
  1916.   _SetCommTimeouts: Pointer;
  1917. function SetCommTimeouts;
  1918. begin
  1919.   GetProcedureAddress(_SetCommTimeouts, kernel32, 'SetCommTimeouts');
  1920.   asm
  1921.     mov esp, ebp
  1922.     pop ebp
  1923.     jmp [_SetCommTimeouts]
  1924.   end;
  1925. end;
  1926. {$ELSE}
  1927. function SetCommTimeouts; external kernel32 name 'SetCommTimeouts';
  1928. {$ENDIF DYNAMIC_LINK}
  1929. {$IFDEF DYNAMIC_LINK}
  1930. var
  1931.   _TransmitCommChar: Pointer;
  1932. function TransmitCommChar;
  1933. begin
  1934.   GetProcedureAddress(_TransmitCommChar, kernel32, 'TransmitCommChar');
  1935.   asm
  1936.     mov esp, ebp
  1937.     pop ebp
  1938.     jmp [_TransmitCommChar]
  1939.   end;
  1940. end;
  1941. {$ELSE}
  1942. function TransmitCommChar; external kernel32 name 'TransmitCommChar';
  1943. {$ENDIF DYNAMIC_LINK}
  1944. {$IFDEF DYNAMIC_LINK}
  1945. var
  1946.   _WaitCommEvent: Pointer;
  1947. function WaitCommEvent;
  1948. begin
  1949.   GetProcedureAddress(_WaitCommEvent, kernel32, 'WaitCommEvent');
  1950.   asm
  1951.     mov esp, ebp
  1952.     pop ebp
  1953.     jmp [_WaitCommEvent]
  1954.   end;
  1955. end;
  1956. {$ELSE}
  1957. function WaitCommEvent; external kernel32 name 'WaitCommEvent';
  1958. {$ENDIF DYNAMIC_LINK}
  1959. {$IFDEF DYNAMIC_LINK}
  1960. var
  1961.   _SetTapePosition: Pointer;
  1962. function SetTapePosition;
  1963. begin
  1964.   GetProcedureAddress(_SetTapePosition, kernel32, 'SetTapePosition');
  1965.   asm
  1966.     mov esp, ebp
  1967.     pop ebp
  1968.     jmp [_SetTapePosition]
  1969.   end;
  1970. end;
  1971. {$ELSE}
  1972. function SetTapePosition; external kernel32 name 'SetTapePosition';
  1973. {$ENDIF DYNAMIC_LINK}
  1974. {$IFDEF DYNAMIC_LINK}
  1975. var
  1976.   _GetTapePosition: Pointer;
  1977. function GetTapePosition;
  1978. begin
  1979.   GetProcedureAddress(_GetTapePosition, kernel32, 'GetTapePosition');
  1980.   asm
  1981.     mov esp, ebp
  1982.     pop ebp
  1983.     jmp [_GetTapePosition]
  1984.   end;
  1985. end;
  1986. {$ELSE}
  1987. function GetTapePosition; external kernel32 name 'GetTapePosition';
  1988. {$ENDIF DYNAMIC_LINK}
  1989. {$IFDEF DYNAMIC_LINK}
  1990. var
  1991.   _PrepareTape: Pointer;
  1992. function PrepareTape;
  1993. begin
  1994.   GetProcedureAddress(_PrepareTape, kernel32, 'PrepareTape');
  1995.   asm
  1996.     mov esp, ebp
  1997.     pop ebp
  1998.     jmp [_PrepareTape]
  1999.   end;
  2000. end;
  2001. {$ELSE}
  2002. function PrepareTape; external kernel32 name 'PrepareTape';
  2003. {$ENDIF DYNAMIC_LINK}
  2004. {$IFDEF DYNAMIC_LINK}
  2005. var
  2006.   _EraseTape: Pointer;
  2007. function EraseTape;
  2008. begin
  2009.   GetProcedureAddress(_EraseTape, kernel32, 'EraseTape');
  2010.   asm
  2011.     mov esp, ebp
  2012.     pop ebp
  2013.     jmp [_EraseTape]
  2014.   end;
  2015. end;
  2016. {$ELSE}
  2017. function EraseTape; external kernel32 name 'EraseTape';
  2018. {$ENDIF DYNAMIC_LINK}
  2019. {$IFDEF DYNAMIC_LINK}
  2020. var
  2021.   _CreateTapePartition: Pointer;
  2022. function CreateTapePartition;
  2023. begin
  2024.   GetProcedureAddress(_CreateTapePartition, kernel32, 'CreateTapePartition');
  2025.   asm
  2026.     mov esp, ebp
  2027.     pop ebp
  2028.     jmp [_CreateTapePartition]
  2029.   end;
  2030. end;
  2031. {$ELSE}
  2032. function CreateTapePartition; external kernel32 name 'CreateTapePartition';
  2033. {$ENDIF DYNAMIC_LINK}
  2034. {$IFDEF DYNAMIC_LINK}
  2035. var
  2036.   _WriteTapemark: Pointer;
  2037. function WriteTapemark;
  2038. begin
  2039.   GetProcedureAddress(_WriteTapemark, kernel32, 'WriteTapemark');
  2040.   asm
  2041.     mov esp, ebp
  2042.     pop ebp
  2043.     jmp [_WriteTapemark]
  2044.   end;
  2045. end;
  2046. {$ELSE}
  2047. function WriteTapemark; external kernel32 name 'WriteTapemark';
  2048. {$ENDIF DYNAMIC_LINK}
  2049. {$IFDEF DYNAMIC_LINK}
  2050. var
  2051.   _GetTapeStatus: Pointer;
  2052. function GetTapeStatus;
  2053. begin
  2054.   GetProcedureAddress(_GetTapeStatus, kernel32, 'GetTapeStatus');
  2055.   asm
  2056.     mov esp, ebp
  2057.     pop ebp
  2058.     jmp [_GetTapeStatus]
  2059.   end;
  2060. end;
  2061. {$ELSE}
  2062. function GetTapeStatus; external kernel32 name 'GetTapeStatus';
  2063. {$ENDIF DYNAMIC_LINK}
  2064. {$IFDEF DYNAMIC_LINK}
  2065. var
  2066.   _GetTapeParameters: Pointer;
  2067. function GetTapeParameters;
  2068. begin
  2069.   GetProcedureAddress(_GetTapeParameters, kernel32, 'GetTapeParameters');
  2070.   asm
  2071.     mov esp, ebp
  2072.     pop ebp
  2073.     jmp [_GetTapeParameters]
  2074.   end;
  2075. end;
  2076. {$ELSE}
  2077. function GetTapeParameters; external kernel32 name 'GetTapeParameters';
  2078. {$ENDIF DYNAMIC_LINK}
  2079. {$IFDEF DYNAMIC_LINK}
  2080. var
  2081.   _SetTapeParameters: Pointer;
  2082. function SetTapeParameters;
  2083. begin
  2084.   GetProcedureAddress(_SetTapeParameters, kernel32, 'SetTapeParameters');
  2085.   asm
  2086.     mov esp, ebp
  2087.     pop ebp
  2088.     jmp [_SetTapeParameters]
  2089.   end;
  2090. end;
  2091. {$ELSE}
  2092. function SetTapeParameters; external kernel32 name 'SetTapeParameters';
  2093. {$ENDIF DYNAMIC_LINK}
  2094. {$IFDEF DYNAMIC_LINK}
  2095. var
  2096.   _Beep: Pointer;
  2097. function Beep;
  2098. begin
  2099.   GetProcedureAddress(_Beep, kernel32, 'Beep');
  2100.   asm
  2101.     mov esp, ebp
  2102.     pop ebp
  2103.     jmp [_Beep]
  2104.   end;
  2105. end;
  2106. {$ELSE}
  2107. function Beep; external kernel32 name 'Beep';
  2108. {$ENDIF DYNAMIC_LINK}
  2109. {$IFDEF DYNAMIC_LINK}
  2110. var
  2111.   _MulDiv: Pointer;
  2112. function MulDiv;
  2113. begin
  2114.   GetProcedureAddress(_MulDiv, kernel32, 'MulDiv');
  2115.   asm
  2116.     mov esp, ebp
  2117.     pop ebp
  2118.     jmp [_MulDiv]
  2119.   end;
  2120. end;
  2121. {$ELSE}
  2122. function MulDiv; external kernel32 name 'MulDiv';
  2123. {$ENDIF DYNAMIC_LINK}
  2124. {$IFDEF DYNAMIC_LINK}
  2125. var
  2126.   _GetSystemTime: Pointer;
  2127. procedure GetSystemTime;
  2128. begin
  2129.   GetProcedureAddress(_GetSystemTime, kernel32, 'GetSystemTime');
  2130.   asm
  2131.     mov esp, ebp
  2132.     pop ebp
  2133.     jmp [_GetSystemTime]
  2134.   end;
  2135. end;
  2136. {$ELSE}
  2137. procedure GetSystemTime; external kernel32 name 'GetSystemTime';
  2138. {$ENDIF DYNAMIC_LINK}
  2139. {$IFDEF DYNAMIC_LINK}
  2140. var
  2141.   _GetSystemTimeAsFileTime: Pointer;
  2142. procedure GetSystemTimeAsFileTime;
  2143. begin
  2144.   GetProcedureAddress(_GetSystemTimeAsFileTime, kernel32, 'GetSystemTimeAsFileTime');
  2145.   asm
  2146.     mov esp, ebp
  2147.     pop ebp
  2148.     jmp [_GetSystemTimeAsFileTime]
  2149.   end;
  2150. end;
  2151. {$ELSE}
  2152. procedure GetSystemTimeAsFileTime; external kernel32 name 'GetSystemTimeAsFileTime';
  2153. {$ENDIF DYNAMIC_LINK}
  2154. {$IFDEF DYNAMIC_LINK}
  2155. var
  2156.   _SetSystemTime: Pointer;
  2157. function SetSystemTime;
  2158. begin
  2159.   GetProcedureAddress(_SetSystemTime, kernel32, 'SetSystemTime');
  2160.   asm
  2161.     mov esp, ebp
  2162.     pop ebp
  2163.     jmp [_SetSystemTime]
  2164.   end;
  2165. end;
  2166. {$ELSE}
  2167. function SetSystemTime; external kernel32 name 'SetSystemTime';
  2168. {$ENDIF DYNAMIC_LINK}
  2169. {$IFDEF DYNAMIC_LINK}
  2170. var
  2171.   _GetLocalTime: Pointer;
  2172. procedure GetLocalTime;
  2173. begin
  2174.   GetProcedureAddress(_GetLocalTime, kernel32, 'GetLocalTime');
  2175.   asm
  2176.     mov esp, ebp
  2177.     pop ebp
  2178.     jmp [_GetLocalTime]
  2179.   end;
  2180. end;
  2181. {$ELSE}
  2182. procedure GetLocalTime; external kernel32 name 'GetLocalTime';
  2183. {$ENDIF DYNAMIC_LINK}
  2184. {$IFDEF DYNAMIC_LINK}
  2185. var
  2186.   _SetLocalTime: Pointer;
  2187. function SetLocalTime;
  2188. begin
  2189.   GetProcedureAddress(_SetLocalTime, kernel32, 'SetLocalTime');
  2190.   asm
  2191.     mov esp, ebp
  2192.     pop ebp
  2193.     jmp [_SetLocalTime]
  2194.   end;
  2195. end;
  2196. {$ELSE}
  2197. function SetLocalTime; external kernel32 name 'SetLocalTime';
  2198. {$ENDIF DYNAMIC_LINK}
  2199. {$IFDEF DYNAMIC_LINK}
  2200. var
  2201.   _GetSystemInfo: Pointer;
  2202. procedure GetSystemInfo;
  2203. begin
  2204.   GetProcedureAddress(_GetSystemInfo, kernel32, 'GetSystemInfo');
  2205.   asm
  2206.     mov esp, ebp
  2207.     pop ebp
  2208.     jmp [_GetSystemInfo]
  2209.   end;
  2210. end;
  2211. {$ELSE}
  2212. procedure GetSystemInfo; external kernel32 name 'GetSystemInfo';
  2213. {$ENDIF DYNAMIC_LINK}
  2214. {$IFDEF DYNAMIC_LINK}
  2215. var
  2216.   _GetNativeSystemInfo: Pointer;
  2217. procedure GetNativeSystemInfo;
  2218. begin
  2219.   GetProcedureAddress(_GetNativeSystemInfo, kernel32, 'GetNativeSystemInfo');
  2220.   asm
  2221.     mov esp, ebp
  2222.     pop ebp
  2223.     jmp [_GetNativeSystemInfo]
  2224.   end;
  2225. end;
  2226. {$ELSE}
  2227. procedure GetNativeSystemInfo; external kernel32 name 'GetNativeSystemInfo';
  2228. {$ENDIF DYNAMIC_LINK}
  2229. {$IFDEF DYNAMIC_LINK}
  2230. var
  2231.   _IsProcessorFeaturePresent: Pointer;
  2232. function IsProcessorFeaturePresent;
  2233. begin
  2234.   GetProcedureAddress(_IsProcessorFeaturePresent, kernel32, 'IsProcessorFeaturePresent');
  2235.   asm
  2236.     mov esp, ebp
  2237.     pop ebp
  2238.     jmp [_IsProcessorFeaturePresent]
  2239.   end;
  2240. end;
  2241. {$ELSE}
  2242. function IsProcessorFeaturePresent; external kernel32 name 'IsProcessorFeaturePresent';
  2243. {$ENDIF DYNAMIC_LINK}
  2244. {$IFDEF DYNAMIC_LINK}
  2245. var
  2246.   _SystemTimeToTzSpecificLocalTime: Pointer;
  2247. function SystemTimeToTzSpecificLocalTime;
  2248. begin
  2249.   GetProcedureAddress(_SystemTimeToTzSpecificLocalTime, kernel32, 'SystemTimeToTzSpecificLocalTime');
  2250.   asm
  2251.     mov esp, ebp
  2252.     pop ebp
  2253.     jmp [_SystemTimeToTzSpecificLocalTime]
  2254.   end;
  2255. end;
  2256. {$ELSE}
  2257. function SystemTimeToTzSpecificLocalTime; external kernel32 name 'SystemTimeToTzSpecificLocalTime';
  2258. {$ENDIF DYNAMIC_LINK}
  2259. {$IFDEF DYNAMIC_LINK}
  2260. var
  2261.   _TzSpecificLocalTimeToSystemTime: Pointer;
  2262. function TzSpecificLocalTimeToSystemTime;
  2263. begin
  2264.   GetProcedureAddress(_TzSpecificLocalTimeToSystemTime, kernel32, 'TzSpecificLocalTimeToSystemTime');
  2265.   asm
  2266.     mov esp, ebp
  2267.     pop ebp
  2268.     jmp [_TzSpecificLocalTimeToSystemTime]
  2269.   end;
  2270. end;
  2271. {$ELSE}
  2272. function TzSpecificLocalTimeToSystemTime; external kernel32 name 'TzSpecificLocalTimeToSystemTime';
  2273. {$ENDIF DYNAMIC_LINK}
  2274. {$IFDEF DYNAMIC_LINK}
  2275. var
  2276.   _GetTimeZoneInformation: Pointer;
  2277. function GetTimeZoneInformation;
  2278. begin
  2279.   GetProcedureAddress(_GetTimeZoneInformation, kernel32, 'GetTimeZoneInformation');
  2280.   asm
  2281.     mov esp, ebp
  2282.     pop ebp
  2283.     jmp [_GetTimeZoneInformation]
  2284.   end;
  2285. end;
  2286. {$ELSE}
  2287. function GetTimeZoneInformation; external kernel32 name 'GetTimeZoneInformation';
  2288. {$ENDIF DYNAMIC_LINK}
  2289. {$IFDEF DYNAMIC_LINK}
  2290. var
  2291.   _SetTimeZoneInformation: Pointer;
  2292. function SetTimeZoneInformation;
  2293. begin
  2294.   GetProcedureAddress(_SetTimeZoneInformation, kernel32, 'SetTimeZoneInformation');
  2295.   asm
  2296.     mov esp, ebp
  2297.     pop ebp
  2298.     jmp [_SetTimeZoneInformation]
  2299.   end;
  2300. end;
  2301. {$ELSE}
  2302. function SetTimeZoneInformation; external kernel32 name 'SetTimeZoneInformation';
  2303. {$ENDIF DYNAMIC_LINK}
  2304. {$IFDEF DYNAMIC_LINK}
  2305. var
  2306.   _SystemTimeToFileTime: Pointer;
  2307. function SystemTimeToFileTime;
  2308. begin
  2309.   GetProcedureAddress(_SystemTimeToFileTime, kernel32, 'SystemTimeToFileTime');
  2310.   asm
  2311.     mov esp, ebp
  2312.     pop ebp
  2313.     jmp [_SystemTimeToFileTime]
  2314.   end;
  2315. end;
  2316. {$ELSE}
  2317. function SystemTimeToFileTime; external kernel32 name 'SystemTimeToFileTime';
  2318. {$ENDIF DYNAMIC_LINK}
  2319. {$IFDEF DYNAMIC_LINK}
  2320. var
  2321.   _FileTimeToLocalFileTime: Pointer;
  2322. function FileTimeToLocalFileTime;
  2323. begin
  2324.   GetProcedureAddress(_FileTimeToLocalFileTime, kernel32, 'FileTimeToLocalFileTime');
  2325.   asm
  2326.     mov esp, ebp
  2327.     pop ebp
  2328.     jmp [_FileTimeToLocalFileTime]
  2329.   end;
  2330. end;
  2331. {$ELSE}
  2332. function FileTimeToLocalFileTime; external kernel32 name 'FileTimeToLocalFileTime';
  2333. {$ENDIF DYNAMIC_LINK}
  2334. {$IFDEF DYNAMIC_LINK}
  2335. var
  2336.   _LocalFileTimeToFileTime: Pointer;
  2337. function LocalFileTimeToFileTime;
  2338. begin
  2339.   GetProcedureAddress(_LocalFileTimeToFileTime, kernel32, 'LocalFileTimeToFileTime');
  2340.   asm
  2341.     mov esp, ebp
  2342.     pop ebp
  2343.     jmp [_LocalFileTimeToFileTime]
  2344.   end;
  2345. end;
  2346. {$ELSE}
  2347. function LocalFileTimeToFileTime; external kernel32 name 'LocalFileTimeToFileTime';
  2348. {$ENDIF DYNAMIC_LINK}
  2349. {$IFDEF DYNAMIC_LINK}
  2350. var
  2351.   _FileTimeToSystemTime: Pointer;
  2352. function FileTimeToSystemTime;
  2353. begin
  2354.   GetProcedureAddress(_FileTimeToSystemTime, kernel32, 'FileTimeToSystemTime');
  2355.   asm
  2356.     mov esp, ebp
  2357.     pop ebp
  2358.     jmp [_FileTimeToSystemTime]
  2359.   end;
  2360. end;
  2361. {$ELSE}
  2362. function FileTimeToSystemTime; external kernel32 name 'FileTimeToSystemTime';
  2363. {$ENDIF DYNAMIC_LINK}
  2364. {$IFDEF DYNAMIC_LINK}
  2365. var
  2366.   _CompareFileTime: Pointer;
  2367. function CompareFileTime;
  2368. begin
  2369.   GetProcedureAddress(_CompareFileTime, kernel32, 'CompareFileTime');
  2370.   asm
  2371.     mov esp, ebp
  2372.     pop ebp
  2373.     jmp [_CompareFileTime]
  2374.   end;
  2375. end;
  2376. {$ELSE}
  2377. function CompareFileTime; external kernel32 name 'CompareFileTime';
  2378. {$ENDIF DYNAMIC_LINK}
  2379. {$IFDEF DYNAMIC_LINK}
  2380. var
  2381.   _FileTimeToDosDateTime: Pointer;
  2382. function FileTimeToDosDateTime;
  2383. begin
  2384.   GetProcedureAddress(_FileTimeToDosDateTime, kernel32, 'FileTimeToDosDateTime');
  2385.   asm
  2386.     mov esp, ebp
  2387.     pop ebp
  2388.     jmp [_FileTimeToDosDateTime]
  2389.   end;
  2390. end;
  2391. {$ELSE}
  2392. function FileTimeToDosDateTime; external kernel32 name 'FileTimeToDosDateTime';
  2393. {$ENDIF DYNAMIC_LINK}
  2394. {$IFDEF DYNAMIC_LINK}
  2395. var
  2396.   _DosDateTimeToFileTime: Pointer;
  2397. function DosDateTimeToFileTime;
  2398. begin
  2399.   GetProcedureAddress(_DosDateTimeToFileTime, kernel32, 'DosDateTimeToFileTime');
  2400.   asm
  2401.     mov esp, ebp
  2402.     pop ebp
  2403.     jmp [_DosDateTimeToFileTime]
  2404.   end;
  2405. end;
  2406. {$ELSE}
  2407. function DosDateTimeToFileTime; external kernel32 name 'DosDateTimeToFileTime';
  2408. {$ENDIF DYNAMIC_LINK}
  2409. {$IFDEF DYNAMIC_LINK}
  2410. var
  2411.   _GetTickCount: Pointer;
  2412. function GetTickCount;
  2413. begin
  2414.   GetProcedureAddress(_GetTickCount, kernel32, 'GetTickCount');
  2415.   asm
  2416.     mov esp, ebp
  2417.     pop ebp
  2418.     jmp [_GetTickCount]
  2419.   end;
  2420. end;
  2421. {$ELSE}
  2422. function GetTickCount; external kernel32 name 'GetTickCount';
  2423. {$ENDIF DYNAMIC_LINK}
  2424. {$IFDEF DYNAMIC_LINK}
  2425. var
  2426.   _SetSystemTimeAdjustment: Pointer;
  2427. function SetSystemTimeAdjustment;
  2428. begin
  2429.   GetProcedureAddress(_SetSystemTimeAdjustment, kernel32, 'SetSystemTimeAdjustment');
  2430.   asm
  2431.     mov esp, ebp
  2432.     pop ebp
  2433.     jmp [_SetSystemTimeAdjustment]
  2434.   end;
  2435. end;
  2436. {$ELSE}
  2437. function SetSystemTimeAdjustment; external kernel32 name 'SetSystemTimeAdjustment';
  2438. {$ENDIF DYNAMIC_LINK}
  2439. {$IFDEF DYNAMIC_LINK}
  2440. var
  2441.   _GetSystemTimeAdjustment: Pointer;
  2442. function GetSystemTimeAdjustment;
  2443. begin
  2444.   GetProcedureAddress(_GetSystemTimeAdjustment, kernel32, 'GetSystemTimeAdjustment');
  2445.   asm
  2446.     mov esp, ebp
  2447.     pop ebp
  2448.     jmp [_GetSystemTimeAdjustment]
  2449.   end;
  2450. end;
  2451. {$ELSE}
  2452. function GetSystemTimeAdjustment; external kernel32 name 'GetSystemTimeAdjustment';
  2453. {$ENDIF DYNAMIC_LINK}
  2454. {$IFDEF DYNAMIC_LINK}
  2455. var
  2456.   _FormatMessageA: Pointer;
  2457. function FormatMessageA;
  2458. begin
  2459.   GetProcedureAddress(_FormatMessageA, kernel32, 'FormatMessageA');
  2460.   asm
  2461.     mov esp, ebp
  2462.     pop ebp
  2463.     jmp [_FormatMessageA]
  2464.   end;
  2465. end;
  2466. {$ELSE}
  2467. function FormatMessageA; external kernel32 name 'FormatMessageA';
  2468. {$ENDIF DYNAMIC_LINK}
  2469. {$IFDEF DYNAMIC_LINK}
  2470. var
  2471.   _FormatMessageW: Pointer;
  2472. function FormatMessageW;
  2473. begin
  2474.   GetProcedureAddress(_FormatMessageW, kernel32, 'FormatMessageW');
  2475.   asm
  2476.     mov esp, ebp
  2477.     pop ebp
  2478.     jmp [_FormatMessageW]
  2479.   end;
  2480. end;
  2481. {$ELSE}
  2482. function FormatMessageW; external kernel32 name 'FormatMessageW';
  2483. {$ENDIF DYNAMIC_LINK}
  2484. {$IFDEF UNICODE}
  2485. {$IFDEF DYNAMIC_LINK}
  2486. var
  2487.   _FormatMessage: Pointer;
  2488. function FormatMessage;
  2489. begin
  2490.   GetProcedureAddress(_FormatMessage, kernel32, 'FormatMessageW');
  2491.   asm
  2492.     mov esp, ebp
  2493.     pop ebp
  2494.     jmp [_FormatMessage]
  2495.   end;
  2496. end;
  2497. {$ELSE}
  2498. function FormatMessage; external kernel32 name 'FormatMessageW';
  2499. {$ENDIF DYNAMIC_LINK}
  2500. {$ELSE}
  2501. {$IFDEF DYNAMIC_LINK}
  2502. var
  2503.   _FormatMessage: Pointer;
  2504. function FormatMessage;
  2505. begin
  2506.   GetProcedureAddress(_FormatMessage, kernel32, 'FormatMessageA');
  2507.   asm
  2508.     mov esp, ebp
  2509.     pop ebp
  2510.     jmp [_FormatMessage]
  2511.   end;
  2512. end;
  2513. {$ELSE}
  2514. function FormatMessage; external kernel32 name 'FormatMessageA';
  2515. {$ENDIF DYNAMIC_LINK}
  2516. {$ENDIF}
  2517. {$IFDEF DYNAMIC_LINK}
  2518. var
  2519.   _CreatePipe: Pointer;
  2520. function CreatePipe;
  2521. begin
  2522.   GetProcedureAddress(_CreatePipe, kernel32, 'CreatePipe');
  2523.   asm
  2524.     mov esp, ebp
  2525.     pop ebp
  2526.     jmp [_CreatePipe]
  2527.   end;
  2528. end;
  2529. {$ELSE}
  2530. function CreatePipe; external kernel32 name 'CreatePipe';
  2531. {$ENDIF DYNAMIC_LINK}
  2532. {$IFDEF DYNAMIC_LINK}
  2533. var
  2534.   _ConnectNamedPipe: Pointer;
  2535. function ConnectNamedPipe;
  2536. begin
  2537.   GetProcedureAddress(_ConnectNamedPipe, kernel32, 'ConnectNamedPipe');
  2538.   asm
  2539.     mov esp, ebp
  2540.     pop ebp
  2541.     jmp [_ConnectNamedPipe]
  2542.   end;
  2543. end;
  2544. {$ELSE}
  2545. function ConnectNamedPipe; external kernel32 name 'ConnectNamedPipe';
  2546. {$ENDIF DYNAMIC_LINK}
  2547. {$IFDEF DYNAMIC_LINK}
  2548. var
  2549.   _DisconnectNamedPipe: Pointer;
  2550. function DisconnectNamedPipe;
  2551. begin
  2552.   GetProcedureAddress(_DisconnectNamedPipe, kernel32, 'DisconnectNamedPipe');
  2553.   asm
  2554.     mov esp, ebp
  2555.     pop ebp
  2556.     jmp [_DisconnectNamedPipe]
  2557.   end;
  2558. end;
  2559. {$ELSE}
  2560. function DisconnectNamedPipe; external kernel32 name 'DisconnectNamedPipe';
  2561. {$ENDIF DYNAMIC_LINK}
  2562. {$IFDEF DYNAMIC_LINK}
  2563. var
  2564.   _SetNamedPipeHandleState: Pointer;
  2565. function SetNamedPipeHandleState;
  2566. begin
  2567.   GetProcedureAddress(_SetNamedPipeHandleState, kernel32, 'SetNamedPipeHandleState');
  2568.   asm
  2569.     mov esp, ebp
  2570.     pop ebp
  2571.     jmp [_SetNamedPipeHandleState]
  2572.   end;
  2573. end;
  2574. {$ELSE}
  2575. function SetNamedPipeHandleState; external kernel32 name 'SetNamedPipeHandleState';
  2576. {$ENDIF DYNAMIC_LINK}
  2577. {$IFDEF DYNAMIC_LINK}
  2578. var
  2579.   _GetNamedPipeInfo: Pointer;
  2580. function GetNamedPipeInfo;
  2581. begin
  2582.   GetProcedureAddress(_GetNamedPipeInfo, kernel32, 'GetNamedPipeInfo');
  2583.   asm
  2584.     mov esp, ebp
  2585.     pop ebp
  2586.     jmp [_GetNamedPipeInfo]
  2587.   end;
  2588. end;
  2589. {$ELSE}
  2590. function GetNamedPipeInfo; external kernel32 name 'GetNamedPipeInfo';
  2591. {$ENDIF DYNAMIC_LINK}
  2592. {$IFDEF DYNAMIC_LINK}
  2593. var
  2594.   _PeekNamedPipe: Pointer;
  2595. function PeekNamedPipe;
  2596. begin
  2597.   GetProcedureAddress(_PeekNamedPipe, kernel32, 'PeekNamedPipe');
  2598.   asm
  2599.     mov esp, ebp
  2600.     pop ebp
  2601.     jmp [_PeekNamedPipe]
  2602.   end;
  2603. end;
  2604. {$ELSE}
  2605. function PeekNamedPipe; external kernel32 name 'PeekNamedPipe';
  2606. {$ENDIF DYNAMIC_LINK}
  2607. {$IFDEF DYNAMIC_LINK}
  2608. var
  2609.   _TransactNamedPipe: Pointer;
  2610. function TransactNamedPipe;
  2611. begin
  2612.   GetProcedureAddress(_TransactNamedPipe, kernel32, 'TransactNamedPipe');
  2613.   asm
  2614.     mov esp, ebp
  2615.     pop ebp
  2616.     jmp [_TransactNamedPipe]
  2617.   end;
  2618. end;
  2619. {$ELSE}
  2620. function TransactNamedPipe; external kernel32 name 'TransactNamedPipe';
  2621. {$ENDIF DYNAMIC_LINK}
  2622. {$IFDEF DYNAMIC_LINK}
  2623. var
  2624.   _CreateMailslotA: Pointer;
  2625. function CreateMailslotA;
  2626. begin
  2627.   GetProcedureAddress(_CreateMailslotA, kernel32, 'CreateMailslotA');
  2628.   asm
  2629.     mov esp, ebp
  2630.     pop ebp
  2631.     jmp [_CreateMailslotA]
  2632.   end;
  2633. end;
  2634. {$ELSE}
  2635. function CreateMailslotA; external kernel32 name 'CreateMailslotA';
  2636. {$ENDIF DYNAMIC_LINK}
  2637. {$IFDEF DYNAMIC_LINK}
  2638. var
  2639.   _CreateMailslotW: Pointer;
  2640. function CreateMailslotW;
  2641. begin
  2642.   GetProcedureAddress(_CreateMailslotW, kernel32, 'CreateMailslotW');
  2643.   asm
  2644.     mov esp, ebp
  2645.     pop ebp
  2646.     jmp [_CreateMailslotW]
  2647.   end;
  2648. end;
  2649. {$ELSE}
  2650. function CreateMailslotW; external kernel32 name 'CreateMailslotW';
  2651. {$ENDIF DYNAMIC_LINK}
  2652. {$IFDEF UNICODE}
  2653. {$IFDEF DYNAMIC_LINK}
  2654. var
  2655.   _CreateMailslot: Pointer;
  2656. function CreateMailslot;
  2657. begin
  2658.   GetProcedureAddress(_CreateMailslot, kernel32, 'CreateMailslotW');
  2659.   asm
  2660.     mov esp, ebp
  2661.     pop ebp
  2662.     jmp [_CreateMailslot]
  2663.   end;
  2664. end;
  2665. {$ELSE}
  2666. function CreateMailslot; external kernel32 name 'CreateMailslotW';
  2667. {$ENDIF DYNAMIC_LINK}
  2668. {$ELSE}
  2669. {$IFDEF DYNAMIC_LINK}
  2670. var
  2671.   _CreateMailslot: Pointer;
  2672. function CreateMailslot;
  2673. begin
  2674.   GetProcedureAddress(_CreateMailslot, kernel32, 'CreateMailslotA');
  2675.   asm
  2676.     mov esp, ebp
  2677.     pop ebp
  2678.     jmp [_CreateMailslot]
  2679.   end;
  2680. end;
  2681. {$ELSE}
  2682. function CreateMailslot; external kernel32 name 'CreateMailslotA';
  2683. {$ENDIF DYNAMIC_LINK}
  2684. {$ENDIF}
  2685. {$IFDEF DYNAMIC_LINK}
  2686. var
  2687.   _GetMailslotInfo: Pointer;
  2688. function GetMailslotInfo;
  2689. begin
  2690.   GetProcedureAddress(_GetMailslotInfo, kernel32, 'GetMailslotInfo');
  2691.   asm
  2692.     mov esp, ebp
  2693.     pop ebp
  2694.     jmp [_GetMailslotInfo]
  2695.   end;
  2696. end;
  2697. {$ELSE}
  2698. function GetMailslotInfo; external kernel32 name 'GetMailslotInfo';
  2699. {$ENDIF DYNAMIC_LINK}
  2700. {$IFDEF DYNAMIC_LINK}
  2701. var
  2702.   _SetMailslotInfo: Pointer;
  2703. function SetMailslotInfo;
  2704. begin
  2705.   GetProcedureAddress(_SetMailslotInfo, kernel32, 'SetMailslotInfo');
  2706.   asm
  2707.     mov esp, ebp
  2708.     pop ebp
  2709.     jmp [_SetMailslotInfo]
  2710.   end;
  2711. end;
  2712. {$ELSE}
  2713. function SetMailslotInfo; external kernel32 name 'SetMailslotInfo';
  2714. {$ENDIF DYNAMIC_LINK}
  2715. {$IFDEF DYNAMIC_LINK}
  2716. var
  2717.   _MapViewOfFile: Pointer;
  2718. function MapViewOfFile;
  2719. begin
  2720.   GetProcedureAddress(_MapViewOfFile, kernel32, 'MapViewOfFile');
  2721.   asm
  2722.     mov esp, ebp
  2723.     pop ebp
  2724.     jmp [_MapViewOfFile]
  2725.   end;
  2726. end;
  2727. {$ELSE}
  2728. function MapViewOfFile; external kernel32 name 'MapViewOfFile';
  2729. {$ENDIF DYNAMIC_LINK}
  2730. {$IFDEF DYNAMIC_LINK}
  2731. var
  2732.   _FlushViewOfFile: Pointer;
  2733. function FlushViewOfFile;
  2734. begin
  2735.   GetProcedureAddress(_FlushViewOfFile, kernel32, 'FlushViewOfFile');
  2736.   asm
  2737.     mov esp, ebp
  2738.     pop ebp
  2739.     jmp [_FlushViewOfFile]
  2740.   end;
  2741. end;
  2742. {$ELSE}
  2743. function FlushViewOfFile; external kernel32 name 'FlushViewOfFile';
  2744. {$ENDIF DYNAMIC_LINK}
  2745. {$IFDEF DYNAMIC_LINK}
  2746. var
  2747.   _UnmapViewOfFile: Pointer;
  2748. function UnmapViewOfFile;
  2749. begin
  2750.   GetProcedureAddress(_UnmapViewOfFile, kernel32, 'UnmapViewOfFile');
  2751.   asm
  2752.     mov esp, ebp
  2753.     pop ebp
  2754.     jmp [_UnmapViewOfFile]
  2755.   end;
  2756. end;
  2757. {$ELSE}
  2758. function UnmapViewOfFile; external kernel32 name 'UnmapViewOfFile';
  2759. {$ENDIF DYNAMIC_LINK}
  2760. {$IFDEF DYNAMIC_LINK}
  2761. var
  2762.   _EncryptFileA: Pointer;
  2763. function EncryptFileA;
  2764. begin
  2765.   GetProcedureAddress(_EncryptFileA, advapi32, 'EncryptFileA');
  2766.   asm
  2767.     mov esp, ebp
  2768.     pop ebp
  2769.     jmp [_EncryptFileA]
  2770.   end;
  2771. end;
  2772. {$ELSE}
  2773. function EncryptFileA; external advapi32 name 'EncryptFileA';
  2774. {$ENDIF DYNAMIC_LINK}
  2775. {$IFDEF DYNAMIC_LINK}
  2776. var
  2777.   _EncryptFileW: Pointer;
  2778. function EncryptFileW;
  2779. begin
  2780.   GetProcedureAddress(_EncryptFileW, advapi32, 'EncryptFileW');
  2781.   asm
  2782.     mov esp, ebp
  2783.     pop ebp
  2784.     jmp [_EncryptFileW]
  2785.   end;
  2786. end;
  2787. {$ELSE}
  2788. function EncryptFileW; external advapi32 name 'EncryptFileW';
  2789. {$ENDIF DYNAMIC_LINK}
  2790. {$IFDEF UNICODE}
  2791. {$IFDEF DYNAMIC_LINK}
  2792. var
  2793.   _EncryptFile: Pointer;
  2794. function EncryptFile;
  2795. begin
  2796.   GetProcedureAddress(_EncryptFile, advapi32, 'EncryptFileW');
  2797.   asm
  2798.     mov esp, ebp
  2799.     pop ebp
  2800.     jmp [_EncryptFile]
  2801.   end;
  2802. end;
  2803. {$ELSE}
  2804. function EncryptFile; external advapi32 name 'EncryptFileW';
  2805. {$ENDIF DYNAMIC_LINK}
  2806. {$ELSE}
  2807. {$IFDEF DYNAMIC_LINK}
  2808. var
  2809.   _EncryptFile: Pointer;
  2810. function EncryptFile;
  2811. begin
  2812.   GetProcedureAddress(_EncryptFile, advapi32, 'EncryptFileA');
  2813.   asm
  2814.     mov esp, ebp
  2815.     pop ebp
  2816.     jmp [_EncryptFile]
  2817.   end;
  2818. end;
  2819. {$ELSE}
  2820. function EncryptFile; external advapi32 name 'EncryptFileA';
  2821. {$ENDIF DYNAMIC_LINK}
  2822. {$ENDIF}
  2823. {$IFDEF DYNAMIC_LINK}
  2824. var
  2825.   _DecryptFileA: Pointer;
  2826. function DecryptFileA;
  2827. begin
  2828.   GetProcedureAddress(_DecryptFileA, advapi32, 'DecryptFileA');
  2829.   asm
  2830.     mov esp, ebp
  2831.     pop ebp
  2832.     jmp [_DecryptFileA]
  2833.   end;
  2834. end;
  2835. {$ELSE}
  2836. function DecryptFileA; external advapi32 name 'DecryptFileA';
  2837. {$ENDIF DYNAMIC_LINK}
  2838. {$IFDEF DYNAMIC_LINK}
  2839. var
  2840.   _DecryptFileW: Pointer;
  2841. function DecryptFileW;
  2842. begin
  2843.   GetProcedureAddress(_DecryptFileW, advapi32, 'DecryptFileW');
  2844.   asm
  2845.     mov esp, ebp
  2846.     pop ebp
  2847.     jmp [_DecryptFileW]
  2848.   end;
  2849. end;
  2850. {$ELSE}
  2851. function DecryptFileW; external advapi32 name 'DecryptFileW';
  2852. {$ENDIF DYNAMIC_LINK}
  2853. {$IFDEF UNICODE}
  2854. {$IFDEF DYNAMIC_LINK}
  2855. var
  2856.   _DecryptFile: Pointer;
  2857. function DecryptFile;
  2858. begin
  2859.   GetProcedureAddress(_DecryptFile, advapi32, 'DecryptFileW');
  2860.   asm
  2861.     mov esp, ebp
  2862.     pop ebp
  2863.     jmp [_DecryptFile]
  2864.   end;
  2865. end;
  2866. {$ELSE}
  2867. function DecryptFile; external advapi32 name 'DecryptFileW';
  2868. {$ENDIF DYNAMIC_LINK}
  2869. {$ELSE}
  2870. {$IFDEF DYNAMIC_LINK}
  2871. var
  2872.   _DecryptFile: Pointer;
  2873. function DecryptFile;
  2874. begin
  2875.   GetProcedureAddress(_DecryptFile, advapi32, 'DecryptFileA');
  2876.   asm
  2877.     mov esp, ebp
  2878.     pop ebp
  2879.     jmp [_DecryptFile]
  2880.   end;
  2881. end;
  2882. {$ELSE}
  2883. function DecryptFile; external advapi32 name 'DecryptFileA';
  2884. {$ENDIF DYNAMIC_LINK}
  2885. {$ENDIF}
  2886. {$IFDEF DYNAMIC_LINK}
  2887. var
  2888.   _FileEncryptionStatusA: Pointer;
  2889. function FileEncryptionStatusA;
  2890. begin
  2891.   GetProcedureAddress(_FileEncryptionStatusA, advapi32, 'FileEncryptionStatusA');
  2892.   asm
  2893.     mov esp, ebp
  2894.     pop ebp
  2895.     jmp [_FileEncryptionStatusA]
  2896.   end;
  2897. end;
  2898. {$ELSE}
  2899. function FileEncryptionStatusA; external advapi32 name 'FileEncryptionStatusA';
  2900. {$ENDIF DYNAMIC_LINK}
  2901. {$IFDEF DYNAMIC_LINK}
  2902. var
  2903.   _FileEncryptionStatusW: Pointer;
  2904. function FileEncryptionStatusW;
  2905. begin
  2906.   GetProcedureAddress(_FileEncryptionStatusW, advapi32, 'FileEncryptionStatusW');
  2907.   asm
  2908.     mov esp, ebp
  2909.     pop ebp
  2910.     jmp [_FileEncryptionStatusW]
  2911.   end;
  2912. end;
  2913. {$ELSE}
  2914. function FileEncryptionStatusW; external advapi32 name 'FileEncryptionStatusW';
  2915. {$ENDIF DYNAMIC_LINK}
  2916. {$IFDEF UNICODE}
  2917. {$IFDEF DYNAMIC_LINK}
  2918. var
  2919.   _FileEncryptionStatus: Pointer;
  2920. function FileEncryptionStatus;
  2921. begin
  2922.   GetProcedureAddress(_FileEncryptionStatus, advapi32, 'FileEncryptionStatusW');
  2923.   asm
  2924.     mov esp, ebp
  2925.     pop ebp
  2926.     jmp [_FileEncryptionStatus]
  2927.   end;
  2928. end;
  2929. {$ELSE}
  2930. function FileEncryptionStatus; external advapi32 name 'FileEncryptionStatusW';
  2931. {$ENDIF DYNAMIC_LINK}
  2932. {$ELSE}
  2933. {$IFDEF DYNAMIC_LINK}
  2934. var
  2935.   _FileEncryptionStatus: Pointer;
  2936. function FileEncryptionStatus;
  2937. begin
  2938.   GetProcedureAddress(_FileEncryptionStatus, advapi32, 'FileEncryptionStatusA');
  2939.   asm
  2940.     mov esp, ebp
  2941.     pop ebp
  2942.     jmp [_FileEncryptionStatus]
  2943.   end;
  2944. end;
  2945. {$ELSE}
  2946. function FileEncryptionStatus; external advapi32 name 'FileEncryptionStatusA';
  2947. {$ENDIF DYNAMIC_LINK}
  2948. {$ENDIF}
  2949. {$IFDEF DYNAMIC_LINK}
  2950. var
  2951.   _OpenEncryptedFileRawA: Pointer;
  2952. function OpenEncryptedFileRawA;
  2953. begin
  2954.   GetProcedureAddress(_OpenEncryptedFileRawA, advapi32, 'OpenEncryptedFileRawA');
  2955.   asm
  2956.     mov esp, ebp
  2957.     pop ebp
  2958.     jmp [_OpenEncryptedFileRawA]
  2959.   end;
  2960. end;
  2961. {$ELSE}
  2962. function OpenEncryptedFileRawA; external advapi32 name 'OpenEncryptedFileRawA';
  2963. {$ENDIF DYNAMIC_LINK}
  2964. {$IFDEF DYNAMIC_LINK}
  2965. var
  2966.   _OpenEncryptedFileRawW: Pointer;
  2967. function OpenEncryptedFileRawW;
  2968. begin
  2969.   GetProcedureAddress(_OpenEncryptedFileRawW, advapi32, 'OpenEncryptedFileRawW');
  2970.   asm
  2971.     mov esp, ebp
  2972.     pop ebp
  2973.     jmp [_OpenEncryptedFileRawW]
  2974.   end;
  2975. end;
  2976. {$ELSE}
  2977. function OpenEncryptedFileRawW; external advapi32 name 'OpenEncryptedFileRawW';
  2978. {$ENDIF DYNAMIC_LINK}
  2979. {$IFDEF UNICODE}
  2980. {$IFDEF DYNAMIC_LINK}
  2981. var
  2982.   _OpenEncryptedFileRaw: Pointer;
  2983. function OpenEncryptedFileRaw;
  2984. begin
  2985.   GetProcedureAddress(_OpenEncryptedFileRaw, advapi32, 'OpenEncryptedFileRawW');
  2986.   asm
  2987.     mov esp, ebp
  2988.     pop ebp
  2989.     jmp [_OpenEncryptedFileRaw]
  2990.   end;
  2991. end;
  2992. {$ELSE}
  2993. function OpenEncryptedFileRaw; external advapi32 name 'OpenEncryptedFileRawW';
  2994. {$ENDIF DYNAMIC_LINK}
  2995. {$ELSE}
  2996. {$IFDEF DYNAMIC_LINK}
  2997. var
  2998.   _OpenEncryptedFileRaw: Pointer;
  2999. function OpenEncryptedFileRaw;
  3000. begin
  3001.   GetProcedureAddress(_OpenEncryptedFileRaw, advapi32, 'OpenEncryptedFileRawA');
  3002.   asm
  3003.     mov esp, ebp
  3004.     pop ebp
  3005.     jmp [_OpenEncryptedFileRaw]
  3006.   end;
  3007. end;
  3008. {$ELSE}
  3009. function OpenEncryptedFileRaw; external advapi32 name 'OpenEncryptedFileRawA';
  3010. {$ENDIF DYNAMIC_LINK}
  3011. {$ENDIF}
  3012. {$IFDEF DYNAMIC_LINK}
  3013. var
  3014.   _ReadEncryptedFileRaw: Pointer;
  3015. function ReadEncryptedFileRaw;
  3016. begin
  3017.   GetProcedureAddress(_ReadEncryptedFileRaw, advapi32, 'ReadEncryptedFileRaw');
  3018.   asm
  3019.     mov esp, ebp
  3020.     pop ebp
  3021.     jmp [_ReadEncryptedFileRaw]
  3022.   end;
  3023. end;
  3024. {$ELSE}
  3025. function ReadEncryptedFileRaw; external advapi32 name 'ReadEncryptedFileRaw';
  3026. {$ENDIF DYNAMIC_LINK}
  3027. {$IFDEF DYNAMIC_LINK}
  3028. var
  3029.   _WriteEncryptedFileRaw: Pointer;
  3030. function WriteEncryptedFileRaw;
  3031. begin
  3032.   GetProcedureAddress(_WriteEncryptedFileRaw, advapi32, 'WriteEncryptedFileRaw');
  3033.   asm
  3034.     mov esp, ebp
  3035.     pop ebp
  3036.     jmp [_WriteEncryptedFileRaw]
  3037.   end;
  3038. end;
  3039. {$ELSE}
  3040. function WriteEncryptedFileRaw; external advapi32 name 'WriteEncryptedFileRaw';
  3041. {$ENDIF DYNAMIC_LINK}
  3042. {$IFDEF DYNAMIC_LINK}
  3043. var
  3044.   _CloseEncryptedFileRaw: Pointer;
  3045. procedure CloseEncryptedFileRaw;
  3046. begin
  3047.   GetProcedureAddress(_CloseEncryptedFileRaw, advapi32, 'CloseEncryptedFileRaw');
  3048.   asm
  3049.     mov esp, ebp
  3050.     pop ebp
  3051.     jmp [_CloseEncryptedFileRaw]
  3052.   end;
  3053. end;
  3054. {$ELSE}
  3055. procedure CloseEncryptedFileRaw; external advapi32 name 'CloseEncryptedFileRaw';
  3056. {$ENDIF DYNAMIC_LINK}
  3057. {$IFDEF DYNAMIC_LINK}
  3058. var
  3059.   _lstrcmpA: Pointer;
  3060. function lstrcmpA;
  3061. begin
  3062.   GetProcedureAddress(_lstrcmpA, kernel32, 'lstrcmpA');
  3063.   asm
  3064.     mov esp, ebp
  3065.     pop ebp
  3066.     jmp [_lstrcmpA]
  3067.   end;
  3068. end;
  3069. {$ELSE}
  3070. function lstrcmpA; external kernel32 name 'lstrcmpA';
  3071. {$ENDIF DYNAMIC_LINK}
  3072. {$IFDEF DYNAMIC_LINK}
  3073. var
  3074.   _lstrcmpW: Pointer;
  3075. function lstrcmpW;
  3076. begin
  3077.   GetProcedureAddress(_lstrcmpW, kernel32, 'lstrcmpW');
  3078.   asm
  3079.     mov esp, ebp
  3080.     pop ebp
  3081.     jmp [_lstrcmpW]
  3082.   end;
  3083. end;
  3084. {$ELSE}
  3085. function lstrcmpW; external kernel32 name 'lstrcmpW';
  3086. {$ENDIF DYNAMIC_LINK}
  3087. {$IFDEF UNICODE}
  3088. {$IFDEF DYNAMIC_LINK}
  3089. var
  3090.   _lstrcmp: Pointer;
  3091. function lstrcmp;
  3092. begin
  3093.   GetProcedureAddress(_lstrcmp, kernel32, 'lstrcmpW');
  3094.   asm
  3095.     mov esp, ebp
  3096.     pop ebp
  3097.     jmp [_lstrcmp]
  3098.   end;
  3099. end;
  3100. {$ELSE}
  3101. function lstrcmp; external kernel32 name 'lstrcmpW';
  3102. {$ENDIF DYNAMIC_LINK}
  3103. {$ELSE}
  3104. {$IFDEF DYNAMIC_LINK}
  3105. var
  3106.   _lstrcmp: Pointer;
  3107. function lstrcmp;
  3108. begin
  3109.   GetProcedureAddress(_lstrcmp, kernel32, 'lstrcmpA');
  3110.   asm
  3111.     mov esp, ebp
  3112.     pop ebp
  3113.     jmp [_lstrcmp]
  3114.   end;
  3115. end;
  3116. {$ELSE}
  3117. function lstrcmp; external kernel32 name 'lstrcmpA';
  3118. {$ENDIF DYNAMIC_LINK}
  3119. {$ENDIF}
  3120. {$IFDEF DYNAMIC_LINK}
  3121. var
  3122.   _lstrcmpiA: Pointer;
  3123. function lstrcmpiA;
  3124. begin
  3125.   GetProcedureAddress(_lstrcmpiA, kernel32, 'lstrcmpiA');
  3126.   asm
  3127.     mov esp, ebp
  3128.     pop ebp
  3129.     jmp [_lstrcmpiA]
  3130.   end;
  3131. end;
  3132. {$ELSE}
  3133. function lstrcmpiA; external kernel32 name 'lstrcmpiA';
  3134. {$ENDIF DYNAMIC_LINK}
  3135. {$IFDEF DYNAMIC_LINK}
  3136. var
  3137.   _lstrcmpiW: Pointer;
  3138. function lstrcmpiW;
  3139. begin
  3140.   GetProcedureAddress(_lstrcmpiW, kernel32, 'lstrcmpiW');
  3141.   asm
  3142.     mov esp, ebp
  3143.     pop ebp
  3144.     jmp [_lstrcmpiW]
  3145.   end;
  3146. end;
  3147. {$ELSE}
  3148. function lstrcmpiW; external kernel32 name 'lstrcmpiW';
  3149. {$ENDIF DYNAMIC_LINK}
  3150. {$IFDEF UNICODE}
  3151. {$IFDEF DYNAMIC_LINK}
  3152. var
  3153.   _lstrcmpi: Pointer;
  3154. function lstrcmpi;
  3155. begin
  3156.   GetProcedureAddress(_lstrcmpi, kernel32, 'lstrcmpiW');
  3157.   asm
  3158.     mov esp, ebp
  3159.     pop ebp
  3160.     jmp [_lstrcmpi]
  3161.   end;
  3162. end;
  3163. {$ELSE}
  3164. function lstrcmpi; external kernel32 name 'lstrcmpiW';
  3165. {$ENDIF DYNAMIC_LINK}
  3166. {$ELSE}
  3167. {$IFDEF DYNAMIC_LINK}
  3168. var
  3169.   _lstrcmpi: Pointer;
  3170. function lstrcmpi;
  3171. begin
  3172.   GetProcedureAddress(_lstrcmpi, kernel32, 'lstrcmpiA');
  3173.   asm
  3174.     mov esp, ebp
  3175.     pop ebp
  3176.     jmp [_lstrcmpi]
  3177.   end;
  3178. end;
  3179. {$ELSE}
  3180. function lstrcmpi; external kernel32 name 'lstrcmpiA';
  3181. {$ENDIF DYNAMIC_LINK}
  3182. {$ENDIF}
  3183. {$IFDEF DYNAMIC_LINK}
  3184. var
  3185.   _lstrcpynA: Pointer;
  3186. function lstrcpynA;
  3187. begin
  3188.   GetProcedureAddress(_lstrcpynA, kernel32, 'lstrcpynA');
  3189.   asm
  3190.     mov esp, ebp
  3191.     pop ebp
  3192.     jmp [_lstrcpynA]
  3193.   end;
  3194. end;
  3195. {$ELSE}
  3196. function lstrcpynA; external kernel32 name 'lstrcpynA';
  3197. {$ENDIF DYNAMIC_LINK}
  3198. {$IFDEF DYNAMIC_LINK}
  3199. var
  3200.   _lstrcpynW: Pointer;
  3201. function lstrcpynW;
  3202. begin
  3203.   GetProcedureAddress(_lstrcpynW, kernel32, 'lstrcpynW');
  3204.   asm
  3205.     mov esp, ebp
  3206.     pop ebp
  3207.     jmp [_lstrcpynW]
  3208.   end;
  3209. end;
  3210. {$ELSE}
  3211. function lstrcpynW; external kernel32 name 'lstrcpynW';
  3212. {$ENDIF DYNAMIC_LINK}
  3213. {$IFDEF UNICODE}
  3214. {$IFDEF DYNAMIC_LINK}
  3215. var
  3216.   _lstrcpyn: Pointer;
  3217. function lstrcpyn;
  3218. begin
  3219.   GetProcedureAddress(_lstrcpyn, kernel32, 'lstrcpynW');
  3220.   asm
  3221.     mov esp, ebp
  3222.     pop ebp
  3223.     jmp [_lstrcpyn]
  3224.   end;
  3225. end;
  3226. {$ELSE}
  3227. function lstrcpyn; external kernel32 name 'lstrcpynW';
  3228. {$ENDIF DYNAMIC_LINK}
  3229. {$ELSE}
  3230. {$IFDEF DYNAMIC_LINK}
  3231. var
  3232.   _lstrcpyn: Pointer;
  3233. function lstrcpyn;
  3234. begin
  3235.   GetProcedureAddress(_lstrcpyn, kernel32, 'lstrcpynA');
  3236.   asm
  3237.     mov esp, ebp
  3238.     pop ebp
  3239.     jmp [_lstrcpyn]
  3240.   end;
  3241. end;
  3242. {$ELSE}
  3243. function lstrcpyn; external kernel32 name 'lstrcpynA';
  3244. {$ENDIF DYNAMIC_LINK}
  3245. {$ENDIF}
  3246. {$IFDEF DYNAMIC_LINK}
  3247. var
  3248.   _lstrcpyA: Pointer;
  3249. function lstrcpyA;
  3250. begin
  3251.   GetProcedureAddress(_lstrcpyA, kernel32, 'lstrcpyA');
  3252.   asm
  3253.     mov esp, ebp
  3254.     pop ebp
  3255.     jmp [_lstrcpyA]
  3256.   end;
  3257. end;
  3258. {$ELSE}
  3259. function lstrcpyA; external kernel32 name 'lstrcpyA';
  3260. {$ENDIF DYNAMIC_LINK}
  3261. {$IFDEF DYNAMIC_LINK}
  3262. var
  3263.   _lstrcpyW: Pointer;
  3264. function lstrcpyW;
  3265. begin
  3266.   GetProcedureAddress(_lstrcpyW, kernel32, 'lstrcpyW');
  3267.   asm
  3268.     mov esp, ebp
  3269.     pop ebp
  3270.     jmp [_lstrcpyW]
  3271.   end;
  3272. end;
  3273. {$ELSE}
  3274. function lstrcpyW; external kernel32 name 'lstrcpyW';
  3275. {$ENDIF DYNAMIC_LINK}
  3276. {$IFDEF UNICODE}
  3277. {$IFDEF DYNAMIC_LINK}
  3278. var
  3279.   _lstrcpy: Pointer;
  3280. function lstrcpy;
  3281. begin
  3282.   GetProcedureAddress(_lstrcpy, kernel32, 'lstrcpyW');
  3283.   asm
  3284.     mov esp, ebp
  3285.     pop ebp
  3286.     jmp [_lstrcpy]
  3287.   end;
  3288. end;
  3289. {$ELSE}
  3290. function lstrcpy; external kernel32 name 'lstrcpyW';
  3291. {$ENDIF DYNAMIC_LINK}
  3292. {$ELSE}
  3293. {$IFDEF DYNAMIC_LINK}
  3294. var
  3295.   _lstrcpy: Pointer;
  3296. function lstrcpy;
  3297. begin
  3298.   GetProcedureAddress(_lstrcpy, kernel32, 'lstrcpyA');
  3299.   asm
  3300.     mov esp, ebp
  3301.     pop ebp
  3302.     jmp [_lstrcpy]
  3303.   end;
  3304. end;
  3305. {$ELSE}
  3306. function lstrcpy; external kernel32 name 'lstrcpyA';
  3307. {$ENDIF DYNAMIC_LINK}
  3308. {$ENDIF}
  3309. {$IFDEF DYNAMIC_LINK}
  3310. var
  3311.   _lstrcatA: Pointer;
  3312. function lstrcatA;
  3313. begin
  3314.   GetProcedureAddress(_lstrcatA, kernel32, 'lstrcatA');
  3315.   asm
  3316.     mov esp, ebp
  3317.     pop ebp
  3318.     jmp [_lstrcatA]
  3319.   end;
  3320. end;
  3321. {$ELSE}
  3322. function lstrcatA; external kernel32 name 'lstrcatA';
  3323. {$ENDIF DYNAMIC_LINK}
  3324. {$IFDEF DYNAMIC_LINK}
  3325. var
  3326.   _lstrcatW: Pointer;
  3327. function lstrcatW;
  3328. begin
  3329.   GetProcedureAddress(_lstrcatW, kernel32, 'lstrcatW');
  3330.   asm
  3331.     mov esp, ebp
  3332.     pop ebp
  3333.     jmp [_lstrcatW]
  3334.   end;
  3335. end;
  3336. {$ELSE}
  3337. function lstrcatW; external kernel32 name 'lstrcatW';
  3338. {$ENDIF DYNAMIC_LINK}
  3339. {$IFDEF UNICODE}
  3340. {$IFDEF DYNAMIC_LINK}
  3341. var
  3342.   _lstrcat: Pointer;
  3343. function lstrcat;
  3344. begin
  3345.   GetProcedureAddress(_lstrcat, kernel32, 'lstrcatW');
  3346.   asm
  3347.     mov esp, ebp
  3348.     pop ebp
  3349.     jmp [_lstrcat]
  3350.   end;
  3351. end;
  3352. {$ELSE}
  3353. function lstrcat; external kernel32 name 'lstrcatW';
  3354. {$ENDIF DYNAMIC_LINK}
  3355. {$ELSE}
  3356. {$IFDEF DYNAMIC_LINK}
  3357. var
  3358.   _lstrcat: Pointer;
  3359. function lstrcat;
  3360. begin
  3361.   GetProcedureAddress(_lstrcat, kernel32, 'lstrcatA');
  3362.   asm
  3363.     mov esp, ebp
  3364.     pop ebp
  3365.     jmp [_lstrcat]
  3366.   end;
  3367. end;
  3368. {$ELSE}
  3369. function lstrcat; external kernel32 name 'lstrcatA';
  3370. {$ENDIF DYNAMIC_LINK}
  3371. {$ENDIF}
  3372. {$IFDEF DYNAMIC_LINK}
  3373. var
  3374.   _lstrlenA: Pointer;
  3375. function lstrlenA;
  3376. begin
  3377.   GetProcedureAddress(_lstrlenA, kernel32, 'lstrlenA');
  3378.   asm
  3379.     mov esp, ebp
  3380.     pop ebp
  3381.     jmp [_lstrlenA]
  3382.   end;
  3383. end;
  3384. {$ELSE}
  3385. function lstrlenA; external kernel32 name 'lstrlenA';
  3386. {$ENDIF DYNAMIC_LINK}
  3387. {$IFDEF DYNAMIC_LINK}
  3388. var
  3389.   _lstrlenW: Pointer;
  3390. function lstrlenW;
  3391. begin
  3392.   GetProcedureAddress(_lstrlenW, kernel32, 'lstrlenW');
  3393.   asm
  3394.     mov esp, ebp
  3395.     pop ebp
  3396.     jmp [_lstrlenW]
  3397.   end;
  3398. end;
  3399. {$ELSE}
  3400. function lstrlenW; external kernel32 name 'lstrlenW';
  3401. {$ENDIF DYNAMIC_LINK}
  3402. {$IFDEF UNICODE}
  3403. {$IFDEF DYNAMIC_LINK}
  3404. var
  3405.   _lstrlen: Pointer;
  3406. function lstrlen;
  3407. begin
  3408.   GetProcedureAddress(_lstrlen, kernel32, 'lstrlenW');
  3409.   asm
  3410.     mov esp, ebp
  3411.     pop ebp
  3412.     jmp [_lstrlen]
  3413.   end;
  3414. end;
  3415. {$ELSE}
  3416. function lstrlen; external kernel32 name 'lstrlenW';
  3417. {$ENDIF DYNAMIC_LINK}
  3418. {$ELSE}
  3419. {$IFDEF DYNAMIC_LINK}
  3420. var
  3421.   _lstrlen: Pointer;
  3422. function lstrlen;
  3423. begin
  3424.   GetProcedureAddress(_lstrlen, kernel32, 'lstrlenA');
  3425.   asm
  3426.     mov esp, ebp
  3427.     pop ebp
  3428.     jmp [_lstrlen]
  3429.   end;
  3430. end;
  3431. {$ELSE}
  3432. function lstrlen; external kernel32 name 'lstrlenA';
  3433. {$ENDIF DYNAMIC_LINK}
  3434. {$ENDIF}
  3435. {$IFDEF DYNAMIC_LINK}
  3436. var
  3437.   _OpenFile: Pointer;
  3438. function OpenFile;
  3439. begin
  3440.   GetProcedureAddress(_OpenFile, kernel32, 'OpenFile');
  3441.   asm
  3442.     mov esp, ebp
  3443.     pop ebp
  3444.     jmp [_OpenFile]
  3445.   end;
  3446. end;
  3447. {$ELSE}
  3448. function OpenFile; external kernel32 name 'OpenFile';
  3449. {$ENDIF DYNAMIC_LINK}
  3450. {$IFDEF DYNAMIC_LINK}
  3451. var
  3452.   __lopen: Pointer;
  3453. function _lopen;
  3454. begin
  3455.   GetProcedureAddress(__lopen, kernel32, '_lopen');
  3456.   asm
  3457.     mov esp, ebp
  3458.     pop ebp
  3459.     jmp [__lopen]
  3460.   end;
  3461. end;
  3462. {$ELSE}
  3463. function _lopen; external kernel32 name '_lopen';
  3464. {$ENDIF DYNAMIC_LINK}
  3465. {$IFDEF DYNAMIC_LINK}
  3466. var
  3467.   __lcreat: Pointer;
  3468. function _lcreat;
  3469. begin
  3470.   GetProcedureAddress(__lcreat, kernel32, '_lcreat');
  3471.   asm
  3472.     mov esp, ebp
  3473.     pop ebp
  3474.     jmp [__lcreat]
  3475.   end;
  3476. end;
  3477. {$ELSE}
  3478. function _lcreat; external kernel32 name '_lcreat';
  3479. {$ENDIF DYNAMIC_LINK}
  3480. {$IFDEF DYNAMIC_LINK}
  3481. var
  3482.   __lread: Pointer;
  3483. function _lread;
  3484. begin
  3485.   GetProcedureAddress(__lread, kernel32, '_lread');
  3486.   asm
  3487.     mov esp, ebp
  3488.     pop ebp
  3489.     jmp [__lread]
  3490.   end;
  3491. end;
  3492. {$ELSE}
  3493. function _lread; external kernel32 name '_lread';
  3494. {$ENDIF DYNAMIC_LINK}
  3495. {$IFDEF DYNAMIC_LINK}
  3496. var
  3497.   __lwrite: Pointer;
  3498. function _lwrite;
  3499. begin
  3500.   GetProcedureAddress(__lwrite, kernel32, '_lwrite');
  3501.   asm
  3502.     mov esp, ebp
  3503.     pop ebp
  3504.     jmp [__lwrite]
  3505.   end;
  3506. end;
  3507. {$ELSE}
  3508. function _lwrite; external kernel32 name '_lwrite';
  3509. {$ENDIF DYNAMIC_LINK}
  3510. {$IFDEF DYNAMIC_LINK}
  3511. var
  3512.   __hread: Pointer;
  3513. function _hread;
  3514. begin
  3515.   GetProcedureAddress(__hread, kernel32, '_hread');
  3516.   asm
  3517.     mov esp, ebp
  3518.     pop ebp
  3519.     jmp [__hread]
  3520.   end;
  3521. end;
  3522. {$ELSE}
  3523. function _hread; external kernel32 name '_hread';
  3524. {$ENDIF DYNAMIC_LINK}
  3525. {$IFDEF DYNAMIC_LINK}
  3526. var
  3527.   __hwrite: Pointer;
  3528. function _hwrite;
  3529. begin
  3530.   GetProcedureAddress(__hwrite, kernel32, '_hwrite');
  3531.   asm
  3532.     mov esp, ebp
  3533.     pop ebp
  3534.     jmp [__hwrite]
  3535.   end;
  3536. end;
  3537. {$ELSE}
  3538. function _hwrite; external kernel32 name '_hwrite';
  3539. {$ENDIF DYNAMIC_LINK}
  3540. {$IFDEF DYNAMIC_LINK}
  3541. var
  3542.   __lclose: Pointer;
  3543. function _lclose;
  3544. begin
  3545.   GetProcedureAddress(__lclose, kernel32, '_lclose');
  3546.   asm
  3547.     mov esp, ebp
  3548.     pop ebp
  3549.     jmp [__lclose]
  3550.   end;
  3551. end;
  3552. {$ELSE}
  3553. function _lclose; external kernel32 name '_lclose';
  3554. {$ENDIF DYNAMIC_LINK}
  3555. {$IFDEF DYNAMIC_LINK}
  3556. var
  3557.   __llseek: Pointer;
  3558. function _llseek;
  3559. begin
  3560.   GetProcedureAddress(__llseek, kernel32, '_llseek');
  3561.   asm
  3562.     mov esp, ebp
  3563.     pop ebp
  3564.     jmp [__llseek]
  3565.   end;
  3566. end;
  3567. {$ELSE}
  3568. function _llseek; external kernel32 name '_llseek';
  3569. {$ENDIF DYNAMIC_LINK}
  3570. {$IFDEF DYNAMIC_LINK}
  3571. var
  3572.   _IsTextUnicode: Pointer;
  3573. function IsTextUnicode;
  3574. begin
  3575.   GetProcedureAddress(_IsTextUnicode, advapi32, 'IsTextUnicode');
  3576.   asm
  3577.     mov esp, ebp
  3578.     pop ebp
  3579.     jmp [_IsTextUnicode]
  3580.   end;
  3581. end;
  3582. {$ELSE}
  3583. function IsTextUnicode; external advapi32 name 'IsTextUnicode';
  3584. {$ENDIF DYNAMIC_LINK}
  3585. {$IFDEF DYNAMIC_LINK}
  3586. var
  3587.   _FlsAlloc: Pointer;
  3588. function FlsAlloc;
  3589. begin
  3590.   GetProcedureAddress(_FlsAlloc, kernel32, 'FlsAlloc');
  3591.   asm
  3592.     mov esp, ebp
  3593.     pop ebp
  3594.     jmp [_FlsAlloc]
  3595.   end;
  3596. end;
  3597. {$ELSE}
  3598. function FlsAlloc; external kernel32 name 'FlsAlloc';
  3599. {$ENDIF DYNAMIC_LINK}
  3600. {$IFDEF DYNAMIC_LINK}
  3601. var
  3602.   _FlsGetValue: Pointer;
  3603. function FlsGetValue;
  3604. begin
  3605.   GetProcedureAddress(_FlsGetValue, kernel32, 'FlsGetValue');
  3606.   asm
  3607.     mov esp, ebp
  3608.     pop ebp
  3609.     jmp [_FlsGetValue]
  3610.   end;
  3611. end;
  3612. {$ELSE}
  3613. function FlsGetValue; external kernel32 name 'FlsGetValue';
  3614. {$ENDIF DYNAMIC_LINK}
  3615. {$IFDEF DYNAMIC_LINK}
  3616. var
  3617.   _FlsSetValue: Pointer;
  3618. function FlsSetValue;
  3619. begin
  3620.   GetProcedureAddress(_FlsSetValue, kernel32, 'FlsSetValue');
  3621.   asm
  3622.     mov esp, ebp
  3623.     pop ebp
  3624.     jmp [_FlsSetValue]
  3625.   end;
  3626. end;
  3627. {$ELSE}
  3628. function FlsSetValue; external kernel32 name 'FlsSetValue';
  3629. {$ENDIF DYNAMIC_LINK}
  3630. {$IFDEF DYNAMIC_LINK}
  3631. var
  3632.   _FlsFree: Pointer;
  3633. function FlsFree;
  3634. begin
  3635.   GetProcedureAddress(_FlsFree, kernel32, 'FlsFree');
  3636.   asm
  3637.     mov esp, ebp
  3638.     pop ebp
  3639.     jmp [_FlsFree]
  3640.   end;
  3641. end;
  3642. {$ELSE}
  3643. function FlsFree; external kernel32 name 'FlsFree';
  3644. {$ENDIF DYNAMIC_LINK}
  3645. {$IFDEF DYNAMIC_LINK}
  3646. var
  3647.   _TlsAlloc: Pointer;
  3648. function TlsAlloc;
  3649. begin
  3650.   GetProcedureAddress(_TlsAlloc, kernel32, 'TlsAlloc');
  3651.   asm
  3652.     mov esp, ebp
  3653.     pop ebp
  3654.     jmp [_TlsAlloc]
  3655.   end;
  3656. end;
  3657. {$ELSE}
  3658. function TlsAlloc; external kernel32 name 'TlsAlloc';
  3659. {$ENDIF DYNAMIC_LINK}
  3660. {$IFDEF DYNAMIC_LINK}
  3661. var
  3662.   _TlsGetValue: Pointer;
  3663. function TlsGetValue;
  3664. begin
  3665.   GetProcedureAddress(_TlsGetValue, kernel32, 'TlsGetValue');
  3666.   asm
  3667.     mov esp, ebp
  3668.     pop ebp
  3669.     jmp [_TlsGetValue]
  3670.   end;
  3671. end;
  3672. {$ELSE}
  3673. function TlsGetValue; external kernel32 name 'TlsGetValue';
  3674. {$ENDIF DYNAMIC_LINK}
  3675. {$IFDEF DYNAMIC_LINK}
  3676. var
  3677.   _TlsSetValue: Pointer;
  3678. function TlsSetValue;
  3679. begin
  3680.   GetProcedureAddress(_TlsSetValue, kernel32, 'TlsSetValue');
  3681.   asm
  3682.     mov esp, ebp
  3683.     pop ebp
  3684.     jmp [_TlsSetValue]
  3685.   end;
  3686. end;
  3687. {$ELSE}
  3688. function TlsSetValue; external kernel32 name 'TlsSetValue';
  3689. {$ENDIF DYNAMIC_LINK}
  3690. {$IFDEF DYNAMIC_LINK}
  3691. var
  3692.   _TlsFree: Pointer;
  3693. function TlsFree;
  3694. begin
  3695.   GetProcedureAddress(_TlsFree, kernel32, 'TlsFree');
  3696.   asm
  3697.     mov esp, ebp
  3698.     pop ebp
  3699.     jmp [_TlsFree]
  3700.   end;
  3701. end;
  3702. {$ELSE}
  3703. function TlsFree; external kernel32 name 'TlsFree';
  3704. {$ENDIF DYNAMIC_LINK}
  3705. {$IFDEF DYNAMIC_LINK}
  3706. var
  3707.   _SleepEx: Pointer;
  3708. function SleepEx;
  3709. begin
  3710.   GetProcedureAddress(_SleepEx, kernel32, 'SleepEx');
  3711.   asm
  3712.     mov esp, ebp
  3713.     pop ebp
  3714.     jmp [_SleepEx]
  3715.   end;
  3716. end;
  3717. {$ELSE}
  3718. function SleepEx; external kernel32 name 'SleepEx';
  3719. {$ENDIF DYNAMIC_LINK}
  3720. {$IFDEF DYNAMIC_LINK}
  3721. var
  3722.   _WaitForSingleObjectEx: Pointer;
  3723. function WaitForSingleObjectEx;
  3724. begin
  3725.   GetProcedureAddress(_WaitForSingleObjectEx, kernel32, 'WaitForSingleObjectEx');
  3726.   asm
  3727.     mov esp, ebp
  3728.     pop ebp
  3729.     jmp [_WaitForSingleObjectEx]
  3730.   end;
  3731. end;
  3732. {$ELSE}
  3733. function WaitForSingleObjectEx; external kernel32 name 'WaitForSingleObjectEx';
  3734. {$ENDIF DYNAMIC_LINK}
  3735. {$IFDEF DYNAMIC_LINK}
  3736. var
  3737.   _WaitForMultipleObjectsEx: Pointer;
  3738. function WaitForMultipleObjectsEx;
  3739. begin
  3740.   GetProcedureAddress(_WaitForMultipleObjectsEx, kernel32, 'WaitForMultipleObjectsEx');
  3741.   asm
  3742.     mov esp, ebp
  3743.     pop ebp
  3744.     jmp [_WaitForMultipleObjectsEx]
  3745.   end;
  3746. end;
  3747. {$ELSE}
  3748. function WaitForMultipleObjectsEx; external kernel32 name 'WaitForMultipleObjectsEx';
  3749. {$ENDIF DYNAMIC_LINK}
  3750. {$IFDEF DYNAMIC_LINK}
  3751. var
  3752.   _SignalObjectAndWait: Pointer;
  3753. function SignalObjectAndWait;
  3754. begin
  3755.   GetProcedureAddress(_SignalObjectAndWait, kernel32, 'SignalObjectAndWait');
  3756.   asm
  3757.     mov esp, ebp
  3758.     pop ebp
  3759.     jmp [_SignalObjectAndWait]
  3760.   end;
  3761. end;
  3762. {$ELSE}
  3763. function SignalObjectAndWait; external kernel32 name 'SignalObjectAndWait';
  3764. {$ENDIF DYNAMIC_LINK}
  3765. {$IFDEF DYNAMIC_LINK}
  3766. var
  3767.   _ReadFileEx: Pointer;
  3768. function ReadFileEx;
  3769. begin
  3770.   GetProcedureAddress(_ReadFileEx, kernel32, 'ReadFileEx');
  3771.   asm
  3772.     mov esp, ebp
  3773.     pop ebp
  3774.     jmp [_ReadFileEx]
  3775.   end;
  3776. end;
  3777. {$ELSE}
  3778. function ReadFileEx; external kernel32 name 'ReadFileEx';
  3779. {$ENDIF DYNAMIC_LINK}
  3780. {$IFDEF DYNAMIC_LINK}
  3781. var
  3782.   _WriteFileEx: Pointer;
  3783. function WriteFileEx;
  3784. begin
  3785.   GetProcedureAddress(_WriteFileEx, kernel32, 'WriteFileEx');
  3786.   asm
  3787.     mov esp, ebp
  3788.     pop ebp
  3789.     jmp [_WriteFileEx]
  3790.   end;
  3791. end;
  3792. {$ELSE}
  3793. function WriteFileEx; external kernel32 name 'WriteFileEx';
  3794. {$ENDIF DYNAMIC_LINK}
  3795. {$IFDEF DYNAMIC_LINK}
  3796. var
  3797.   _BackupRead: Pointer;
  3798. function BackupRead;
  3799. begin
  3800.   GetProcedureAddress(_BackupRead, kernel32, 'BackupRead');
  3801.   asm
  3802.     mov esp, ebp
  3803.     pop ebp
  3804.     jmp [_BackupRead]
  3805.   end;
  3806. end;
  3807. {$ELSE}
  3808. function BackupRead; external kernel32 name 'BackupRead';
  3809. {$ENDIF DYNAMIC_LINK}
  3810. {$IFDEF DYNAMIC_LINK}
  3811. var
  3812.   _BackupSeek: Pointer;
  3813. function BackupSeek;
  3814. begin
  3815.   GetProcedureAddress(_BackupSeek, kernel32, 'BackupSeek');
  3816.   asm
  3817.     mov esp, ebp
  3818.     pop ebp
  3819.     jmp [_BackupSeek]
  3820.   end;
  3821. end;
  3822. {$ELSE}
  3823. function BackupSeek; external kernel32 name 'BackupSeek';
  3824. {$ENDIF DYNAMIC_LINK}
  3825. {$IFDEF DYNAMIC_LINK}
  3826. var
  3827.   _BackupWrite: Pointer;
  3828. function BackupWrite;
  3829. begin
  3830.   GetProcedureAddress(_BackupWrite, kernel32, 'BackupWrite');
  3831.   asm
  3832.     mov esp, ebp
  3833.     pop ebp
  3834.     jmp [_BackupWrite]
  3835.   end;
  3836. end;
  3837. {$ELSE}
  3838. function BackupWrite; external kernel32 name 'BackupWrite';
  3839. {$ENDIF DYNAMIC_LINK}
  3840. {$IFDEF DYNAMIC_LINK}
  3841. var
  3842.   _ReadFileScatter: Pointer;
  3843. function ReadFileScatter;
  3844. begin
  3845.   GetProcedureAddress(_ReadFileScatter, kernel32, 'ReadFileScatter');
  3846.   asm
  3847.     mov esp, ebp
  3848.     pop ebp
  3849.     jmp [_ReadFileScatter]
  3850.   end;
  3851. end;
  3852. {$ELSE}
  3853. function ReadFileScatter; external kernel32 name 'ReadFileScatter';
  3854. {$ENDIF DYNAMIC_LINK}
  3855. {$IFDEF DYNAMIC_LINK}
  3856. var
  3857.   _WriteFileGather: Pointer;
  3858. function WriteFileGather;
  3859. begin
  3860.   GetProcedureAddress(_WriteFileGather, kernel32, 'WriteFileGather');
  3861.   asm
  3862.     mov esp, ebp
  3863.     pop ebp
  3864.     jmp [_WriteFileGather]
  3865.   end;
  3866. end;
  3867. {$ELSE}
  3868. function WriteFileGather; external kernel32 name 'WriteFileGather';
  3869. {$ENDIF DYNAMIC_LINK}
  3870. { MVB:
  3871.   The implementation of CreateMutex only interpretes bInitialOwner as True if
  3872.   it's ordinal value is 1, all other values are interpreted as False. Delphi
  3873.   compiles Longbool(True) as $FFFFFFFF which is consequently interpreted as
  3874.   False. Changing the bInitalOwner parameter type to Boolean fixes the problem
  3875.   (Boolean(True) = 1) but that would be implementation specific and might break
  3876.   in the future, though unlikely. Hence the CreateMutex function here which
  3877.   explicitly passes LongBool(1) instead of LongBool(True). }
  3878. type
  3879.   TCreateMutexA = function (lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: LongBool; lpName: LPCSTR): HANDLE; stdcall;
  3880.   TCreateMutexW = function (lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: LongBool; lpName: LPCWSTR): HANDLE; stdcall;
  3881. var
  3882.   _CreateMutexA: Pointer;
  3883.   _CreateMutexW: Pointer;
  3884. function CreateMutexA(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCSTR): HANDLE;
  3885. begin
  3886.   GetProcedureAddress(_CreateMutexA, kernel32, 'CreateMutexA');
  3887.   if bInitialOwner then
  3888.     Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(1), lpName)
  3889.   else
  3890.     Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(0), lpName)
  3891. end;
  3892. function CreateMutexW(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCWSTR): HANDLE;
  3893. begin
  3894.   GetProcedureAddress(_CreateMutexW, kernel32, 'CreateMutexW');
  3895.   if bInitialOwner then
  3896.     Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(1), lpName)
  3897.   else
  3898.     Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(0), lpName)
  3899. end;
  3900. {$IFDEF UNICODE}
  3901. function CreateMutex(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCWSTR): HANDLE;
  3902. begin
  3903.   GetProcedureAddress(_CreateMutexW, kernel32, 'CreateMutexW');
  3904.   if bInitialOwner then
  3905.     Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(1), lpName)
  3906.   else
  3907.     Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(0), lpName)
  3908. end;
  3909. {$ELSE}
  3910. function CreateMutex(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCSTR): HANDLE;
  3911. begin
  3912.   GetProcedureAddress(_CreateMutexA, kernel32, 'CreateMutexA');
  3913.   if bInitialOwner then
  3914.     Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(1), lpName)
  3915.   else
  3916.     Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(0), lpName)
  3917. end;
  3918. {$ENDIF}
  3919. {$IFDEF DYNAMIC_LINK}
  3920. var
  3921.   _OpenMutexA: Pointer;
  3922. function OpenMutexA;
  3923. begin
  3924.   GetProcedureAddress(_OpenMutexA, kernel32, 'OpenMutexA');
  3925.   asm
  3926.     mov esp, ebp
  3927.     pop ebp
  3928.     jmp [_OpenMutexA]
  3929.   end;
  3930. end;
  3931. {$ELSE}
  3932. function OpenMutexA; external kernel32 name 'OpenMutexA';
  3933. {$ENDIF DYNAMIC_LINK}
  3934. {$IFDEF DYNAMIC_LINK}
  3935. var
  3936.   _OpenMutexW: Pointer;
  3937. function OpenMutexW;
  3938. begin
  3939.   GetProcedureAddress(_OpenMutexW, kernel32, 'OpenMutexW');
  3940.   asm
  3941.     mov esp, ebp
  3942.     pop ebp
  3943.     jmp [_OpenMutexW]
  3944.   end;
  3945. end;
  3946. {$ELSE}
  3947. function OpenMutexW; external kernel32 name 'OpenMutexW';
  3948. {$ENDIF DYNAMIC_LINK}
  3949. {$IFDEF UNICODE}
  3950. {$IFDEF DYNAMIC_LINK}
  3951. var
  3952.   _OpenMutex: Pointer;
  3953. function OpenMutex;
  3954. begin
  3955.   GetProcedureAddress(_OpenMutex, kernel32, 'OpenMutexW');
  3956.   asm
  3957.     mov esp, ebp
  3958.     pop ebp
  3959.     jmp [_OpenMutex]
  3960.   end;
  3961. end;
  3962. {$ELSE}
  3963. function OpenMutex; external kernel32 name 'OpenMutexW';
  3964. {$ENDIF DYNAMIC_LINK}
  3965. {$ELSE}
  3966. {$IFDEF DYNAMIC_LINK}
  3967. var
  3968.   _OpenMutex: Pointer;
  3969. function OpenMutex;
  3970. begin
  3971.   GetProcedureAddress(_OpenMutex, kernel32, 'OpenMutexA');
  3972.   asm
  3973.     mov esp, ebp
  3974.     pop ebp
  3975.     jmp [_OpenMutex]
  3976.   end;
  3977. end;
  3978. {$ELSE}
  3979. function OpenMutex; external kernel32 name 'OpenMutexA';
  3980. {$ENDIF DYNAMIC_LINK}
  3981. {$ENDIF}
  3982. {$IFDEF DYNAMIC_LINK}
  3983. var
  3984.   _CreateEventA: Pointer;
  3985. function CreateEventA;
  3986. begin
  3987.   GetProcedureAddress(_CreateEventA, kernel32, 'CreateEventA');
  3988.   asm
  3989.     mov esp, ebp
  3990.     pop ebp
  3991.     jmp [_CreateEventA]
  3992.   end;
  3993. end;
  3994. {$ELSE}
  3995. function CreateEventA; external kernel32 name 'CreateEventA';
  3996. {$ENDIF DYNAMIC_LINK}
  3997. {$IFDEF DYNAMIC_LINK}
  3998. var
  3999.   _CreateEventW: Pointer;
  4000. function CreateEventW;
  4001. begin
  4002.   GetProcedureAddress(_CreateEventW, kernel32, 'CreateEventW');
  4003.   asm
  4004.     mov esp, ebp
  4005.     pop ebp
  4006.     jmp [_CreateEventW]
  4007.   end;
  4008. end;
  4009. {$ELSE}
  4010. function CreateEventW; external kernel32 name 'CreateEventW';
  4011. {$ENDIF DYNAMIC_LINK}
  4012. {$IFDEF UNICODE}