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\SG100\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
********************************************************
questfarAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

mbonaciCommented:
Hi questfar,
* means that it is a pointer to the variable of that type (uchar* - pointer on unsigned char)

Hope this helps,
Marko

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
mbonaciCommented:
questfar,
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
Sjef BosmanGroupware ConsultantCommented:
ByVal means that a parameter is passed by value. I think you need a different specification, like:

    Declare Sub Get_Noise Lib "C:\Bits\Raffles\SG100\SG100\ISAF_N1.dll" Alias "_Get_Noise_std@16" _
    (Byte_PTR as String , Byval Bytes As Long,  Error_Code As Long, Exception As Long)

I have to check about the string, I'll be bakk...
JavaScript Best Practices

Save hours in development time and avoid common mistakes by learning the best practices to use for JavaScript.

Sjef BosmanGroupware ConsultantCommented:
See the Designer Help database:
    "Passing arguments to C functions"  
mbonaciCommented:
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
mbonaciCommented:
questfar,

I think you need to "play" a little with params:
http://www.experts-exchange.com/Applications/Email/Lotus_Notes_Domino/Q_20702748.html

Hope this helps,
Marko
questfarAuthor Commented:
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
mbonaciCommented:
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
Sjef BosmanGroupware ConsultantCommented:
Please read http://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?
mbonaciCommented:
questfar,
and why did you give grade C ???

:(

Marko
questfarAuthor Commented:
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Lotus IBM

From novice to tech pro — start learning today.