questfar
asked on
Calling an api sub
I've asked this before and thought I was given enough info to resolve my problem , what am I doing wrong??. I have other calls to the dll that are functions that work. It's the sub that fails.
Code is in an agent
Here is parts of the code
First my declaration:
Declare Sub Get_Noise Lib "C:\Bits\Raffles\SG100\SG1 00\ISAF_N1 .dll" Alias "_Get_Noise_std@16" (Byte_PTR as String , Byval Bytes As Long, Byval Error_Code As Long, Byval Exception As Long)
Dim gstr as string
gstr=Space(8)
ErrorCode=1
Exception=1
Call Get_Noise(gstr,1,ErrorCode , Exception)
When the Call executes , the app crashes, so I'm sending wrong info to the dll. I've tried all sotrs of variations to no avail. Below is the only documentation I have for this dll. Addionally , what does the asterisk signify in the first line?
************************** ********** ********** **********
void Get_Noise( uchar *Byte_PTR, ulong Bytes, ulong *Error_Code, ulong
*Exception);
The call returns a string, of specified length, of random bytes, to
memory buffer at address Byte_PTR.
File Type: DLL
Section contains the following Exports for ISAF_N1.DLL
0 characteristics
3EADF853 time date stamp Tue Apr 29 03:58:11 2003
0.0 version
1 base
10 # functions
10 # names
ordinal hint name
1 0 DLL_Setup (00001460)
3 1 Get_Noise (000023b0)
4 2 Get_Noise_Ex (000027f0)
7 3 Init_Noise_Thread (000013a0)
8 4 Insert_Ciphertext (00002b50)
9 5 Insert_Noise (000019e0)
A 6 Release_UpdateLock (00002d30)
C 7 SG100_Password (00002f70)
E 8 SG100_Random (00002e60)
10 9 Set_Status_Noise_Thread (00001610)
2 A _DLL_Setup_std@8 (00001440)
5 B _Get_Noise_Ex_std@20 (000027c0)
6 C _Get_Noise_std@16 (00002390)
B D _Release_UpdateLock_std@8 (00002d10)
D E _SG100_Password_std@16 (00002f50)
F F _SG100_Random_std@12 (00002e40)
Summary
2000 .bss
2000 .data
1000 .edata
1000 .idata
1000 .rdata
1000 .reloc
1000 .rsrc
1000 .sdata
6000 .text
************************** ********** ********** **********
Code is in an agent
Here is parts of the code
First my declaration:
Declare Sub Get_Noise Lib "C:\Bits\Raffles\SG100\SG1
Dim gstr as string
gstr=Space(8)
ErrorCode=1
Exception=1
Call Get_Noise(gstr,1,ErrorCode
When the Call executes , the app crashes, so I'm sending wrong info to the dll. I've tried all sotrs of variations to no avail. Below is the only documentation I have for this dll. Addionally , what does the asterisk signify in the first line?
**************************
void Get_Noise( uchar *Byte_PTR, ulong Bytes, ulong *Error_Code, ulong
*Exception);
The call returns a string, of specified length, of random bytes, to
memory buffer at address Byte_PTR.
File Type: DLL
Section contains the following Exports for ISAF_N1.DLL
0 characteristics
3EADF853 time date stamp Tue Apr 29 03:58:11 2003
0.0 version
1 base
10 # functions
10 # names
ordinal hint name
1 0 DLL_Setup (00001460)
3 1 Get_Noise (000023b0)
4 2 Get_Noise_Ex (000027f0)
7 3 Init_Noise_Thread (000013a0)
8 4 Insert_Ciphertext (00002b50)
9 5 Insert_Noise (000019e0)
A 6 Release_UpdateLock (00002d30)
C 7 SG100_Password (00002f70)
E 8 SG100_Random (00002e60)
10 9 Set_Status_Noise_Thread (00001610)
2 A _DLL_Setup_std@8 (00001440)
5 B _Get_Noise_Ex_std@20 (000027c0)
6 C _Get_Noise_std@16 (00002390)
B D _Release_UpdateLock_std@8 (00002d10)
D E _SG100_Password_std@16 (00002f50)
F F _SG100_Random_std@12 (00002e40)
Summary
2000 .bss
2000 .data
1000 .edata
1000 .idata
1000 .rdata
1000 .reloc
1000 .rsrc
1000 .sdata
6000 .text
**************************
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
See the Designer Help database:
"Passing arguments to C functions"
"Passing arguments to C functions"
And, as I said, byVal (or "by value") means that the copy of the object is sent to the function, not the reference (memory location pointer) to that object.
Marko
Marko
questfar,
I think you need to "play" a little with params:
https://www.experts-exchange.com/questions/20702748/API-call-to-create-full-text-index-crashes-the-server.html
Hope this helps,
Marko
I think you need to "play" a little with params:
https://www.experts-exchange.com/questions/20702748/API-call-to-create-full-text-index-crashes-the-server.html
Hope this helps,
Marko
ASKER
I've resolved the problem. The declaration was using byval in the Error_code and Exception, Romoving ByVal resolved problem
I'll give 50 point for the answers posted
Thanks
I'll give 50 point for the answers posted
Thanks
questfar,
what?
this is from my second post:
> if something is pointer that means it cannot be sent byval (you're sending the copy of the object where the four byte pointer on an object is expected).
Hope this helps,
Marko
what?
this is from my second post:
> if something is pointer that means it cannot be sent byval (you're sending the copy of the object where the four byte pointer on an object is expected).
Hope this helps,
Marko
Please read https://www.experts-exchange.com/help.jsp#hi73 for how to grade a question. A <C> is out of the question, even a <B> isn't enough. You got good assistance from both of us. Would you be so kind to reconsider your grading?
questfar,
and why did you give grade C ???
:(
Marko
and why did you give grade C ???
:(
Marko
ASKER
I'll regrade. The answers didn't assist me in resolving the issue. I resolved it from info elsewhere. But I read the guidelines and it makes to regrade.
Thanks for the quick responses
Orlando
Thanks for the quick responses
Orlando
if something is pointer that means it cannot be sent byval (you're sending the copy of the object where the four byte pointer on an object is expected).
Hope this helps,
Marko