FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Write C code and return 0 not work.
Posts: 866
Joined: Tue Oct 16, 2007 08:57 AM

Write C code and return 0 not work.

Posted: Mon Dec 11, 2023 03:16 AM
Dear Antonio, Mr.Rao

Why I run INITMODULE function return 0, but correct is some number not 0

I have a dll file.

C code
Code (fw): Select all Collapse
unsigned long InitModule ( char* pszModuleName, ;
                           void* pInitArgs,     ;
                           unsigned long* pulModuleHandle);
FWH code
Code (fw): Select all Collapse
INITMODULE("HCAPKCS11",@hICModule)

#pragma BEGINDUMP

   #include "windows.h"
   #include "hbapi.h"

   int WINAPI InitModule( LPSTR pszModuleName, void * pInitargs, LPDWORD pulModuleHandle);
                                        
   HB_FUNC( INITMODULE)
   {
     LPSTR   pszModuleName   = (char *) hb_parc(1);
     LPDWORD   pulModuleHandle = hb_parnl(2);
     LONG err;
     err=InitModule( pszModuleName, NULL, &pulModuleHandle );
     hb_retnl(err);
   }
#pragma ENDDUMP
Best Regards,



Richard



Harbour 3.2.0dev (r2503251254) => Borland C++ v7.7 32bit

MySQL v8.0

Harbour 3.2.0dev (r2503251254) => Borland C++ v7.7 64bit
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM

Re: Write C code and return 0 not work.

Posted: Mon Dec 11, 2023 05:48 AM
richard-service wrote:Dear Antonio, Mr.Rao

Why I run INITMODULE function return 0, but correct is some number not 0

I have a dll file.

C code
Code (fw): Select all Collapse
unsigned long InitModule ( char* pszModuleName, ;
                           void* pInitArgs,     ;
                           unsigned long* pulModuleHandle);
FWH code
Code (fw): Select all Collapse
INITMODULE("HCAPKCS11",@hICModule)

#pragma BEGINDUMP

   #include "windows.h"
   #include "hbapi.h"

   int WINAPI InitModule( LPSTR pszModuleName, void * pInitargs, LPDWORD pulModuleHandle);
                                        
   HB_FUNC( INITMODULE)
   {
     LPSTR   pszModuleName   = (char *) hb_parc(1);
     LPDWORD   pulModuleHandle = hb_parnl(2);
     LONG err;
     err=InitModule( pszModuleName, NULL, &pulModuleHandle );
     hb_retnl(err);
   }
#pragma ENDDUMP
Please, try
Code (fw): Select all Collapse
INITMODULE("HCAPKCS11", , @hICModule)

#pragma BEGINDUMP

   #include "windows.h"
   #include "hbapi.h"

   int WINAPI InitModule( LPSTR pszModuleName, void * pInitargs, LPDWORD pulModuleHandle);
                                        
   HB_FUNC( INITMODULE)
   {
     LPSTR   pszModuleName   = (char *) hb_parc(1);
     LPDWORD   pulModuleHandle = hb_parnl(3);
     LONG err;
     err=InitModule( pszModuleName, NULL, &pulModuleHandle );
     hb_retnl(err);
   }
#pragma ENDDUMP
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 866
Joined: Tue Oct 16, 2007 08:57 AM

Re: Write C code and return 0 not work.

Posted: Thu Dec 14, 2023 10:49 AM
cnavarro wrote:
Dear Antonio, Mr.Rao

Why I run INITMODULE function return 0, but correct is some number not 0

I have a dll file.

C code
Code (fw): Select all Collapse
unsigned long InitModule ( char* pszModuleName, ;
                           void* pInitArgs,     ;
                           unsigned long* pulModuleHandle);
FWH code
Code (fw): Select all Collapse
INITMODULE("HCAPKCS11",@hICModule)

#pragma BEGINDUMP

   #include "windows.h"
   #include "hbapi.h"

   int WINAPI InitModule( LPSTR pszModuleName, void * pInitargs, LPDWORD pulModuleHandle);
                                        
   HB_FUNC( INITMODULE)
   {
     LPSTR   pszModuleName   = (char *) hb_parc(1);
     LPDWORD   pulModuleHandle = hb_parnl(2);
     LONG err;
     err=InitModule( pszModuleName, NULL, &pulModuleHandle );
     hb_retnl(err);
   }
#pragma ENDDUMP
Please, try
Code (fw): Select all Collapse
INITMODULE("HCAPKCS11", , @hICModule)

#pragma BEGINDUMP

   #include "windows.h"
   #include "hbapi.h"

   int WINAPI InitModule( LPSTR pszModuleName, void * pInitargs, LPDWORD pulModuleHandle);
                                        
   HB_FUNC( INITMODULE)
   {
     LPSTR   pszModuleName   = (char *) hb_parc(1);
     LPDWORD   pulModuleHandle = hb_parnl(3);
     LONG err;
     err=InitModule( pszModuleName, NULL, &pulModuleHandle );
     hb_retnl(err);
   }
#pragma ENDDUMP
Thanks a lot. it's work.
Best Regards,



Richard



Harbour 3.2.0dev (r2503251254) => Borland C++ v7.7 32bit

MySQL v8.0

Harbour 3.2.0dev (r2503251254) => Borland C++ v7.7 64bit
Posts: 866
Joined: Tue Oct 16, 2007 08:57 AM

Re: Write C code and return 0 not work.

Posted: Thu Dec 14, 2023 10:54 AM
Dear all

This's other function below:
Code (fw): Select all Collapse
nsigned long GetKeyObjectHandle (
  unsigned long ulModuleHandle,
  unsigned long ulSessionHandle,
  int iKeyType,
  unsigned char* pKeyID,
  int iKeyIDLength,
  void* pvPara,
  int iParaLength,
  unsigned long* pulKeyObjectHandle)
How to make HB_GetKeyObjectHandle() function?

void* pvPara => Deadly

This is VB call function below:
Code (fw): Select all Collapse
Dim hKeyObject As Long
sKeyID(0) = &H1    
iKeyType = 0     
rtn = GetKeyObjectHandle(hICModule, hICSession, iKeyType, 0, 0, VarPtr(sKeyID(0)), 1, VarPtr(hKeyObject))
Best Regards,



Richard



Harbour 3.2.0dev (r2503251254) => Borland C++ v7.7 32bit

MySQL v8.0

Harbour 3.2.0dev (r2503251254) => Borland C++ v7.7 64bit

Continue the discussion