Jump to content

FPessina

Members
  • Content Count

    4
  • Joined

  • Last visited

Everything posted by FPessina

  1. Hello, I am using the SvCom library to develop windows services. On Delphi 11.3 with target platform Win32 it works, but I am unable to let services run with target platform Win64. On Delphi 10.4 everything worked fine. I checked source code of the library and It seems that nothing significant has changed between the two versions. The problem is that, when the service starts, an error is being displayed on svCom window (No exception is raised): SetServiceStatus: hServiceStatus is invalid Then the service just stop. The code that should set service status, and that return the error is the following: const PSvSetServiceStatus: Pointer = nil; function SvSetservicestatus; asm call InitNTServiceDebug {$IFDEF CPUX64} Mov rax, qword PTR [PSvSetServiceStatus] test rax,rax Jz SetServicestatus Jmp dword64 Ptr [PSvSetServiceStatus] {$ELSE} Pop EBP Cmp DWORD Ptr [PSvSetServiceStatus],$00 JZ SetserviceStatus jmp DWORD Ptr [PSvSetServiceStatus] {$ENDIF} end; I also tried to contact the support of this library but received no reply Do you know how this could be fix? Thanks
  2. FPessina

    SvCom - Services 64bit on Delphi 11.3

    We found the solution! The problem seems to be the "Address space layout randomization", a new feature introduced in Delphi 11. You can find it on Project Options -> Building -> Delphi Compiler -> Linking: Here are two options: Support address space layout randomization (ASLR) Support high-entropy 64-bit address space layout randomization (ASLR) These two options are set to TRUE by default on new projects. SvCom uses assemblies, which is probably why it fails when ASLR is enabled. By disabling even just one of these two options, everything goes back to working as it should. Hope this can help other people who might have problems with SvCom or even just with assembly code on Delphi 11.
  3. FPessina

    SvCom - Services 64bit on Delphi 11.3

    We use SvCom to be able to use their service manager simulator, which is convenient for debugging. In addition, we have about 20 services developed with SvCom, and refactoring them all to stop using it would take a lot of time and effort. This could be an effective method for debugging services, but I personally find it more inconvenient than having a servicemanager simulator like with SvCom (if only it worked with win64). if no solution is forthcoming, we will consider this approach by converting all services to TService.
  4. FPessina

    SvCom - Services 64bit on Delphi 11.3

    So there is no way to let services compiled with D113 run on Win64 with SvCom?
×