Calling Convention stdcall (Windows API)

From: Hof, Philipp <"Hof,>
Date: Mon, 04 Oct 2004 15:12:23 +1300

----boundary-LibPST-iamunique-402911554_-_-
Content-type: text/plain

Thanks for your replies regarding initializing records.

Calling the Windows API in a less conventional way (instead of MODULE
MyInterface ["MyDll"];) another question arose:
What is the calling convention used in Blackbox? Is it [stdcall] by default?
There was no sysflag to say PROCEDURE [WINAPI]...

MODULE ZeroMemory;

IMPORT S := SYSTEM, W := WinApi;

TYPE
  TestRecord = RECORD[untagged]
    value: INTEGER;
    string: ARRAY 16 OF SHORTCHAR;
  END;

  RTLZEROMEMORY = PROCEDURE (address: W.PtrVoid; size: INTEGER);

VAR
  RtlZeroMemory: RTLZEROMEMORY;
  mod: W.HMODULE;

PROCEDURE Test*;
VAR
  r: TestRecord;
BEGIN
  ...
  RtlZeroMemory(S.ADR(r), SIZE(TestRecord));
  ...
END Test;

BEGIN
  mod := W.LoadLibrary("Kernel32.DLL");
  RtlZeroMemory := S.VAL(RTLZEROMEMORY, W.GetProcAddress(mod,
"RtlZeroMemory"));
END ZeroMemory.


Thanks,
Philipp


Info:
Another option where S := SYSTEM:
PROCEDURE MemSet (address: INTEGER; value: BYTE; size: INTEGER);
VAR
  i: INTEGER;
BEGIN
  FOR i := address TO (address + size) - 1 DO
    S.PUT(i, value);
  END;
END MemSet;
--------------------------------------------

To unsubscribe from this mailing list, send a message containing the word "unsubscribe" to:
   blackbox-request{([at]})nowhere.xy

To get a list of valid e-mail commands and instructions on their usage, send a message containing the word "help" to the above address.

Send any problem reports or questions related to this email list to the list owner at
   owner-blackbox{([at]})nowhere.xy

Current posting policy:

a) To post you should use the same address by which you are subscribed to the mailing list. That way, the list server will recognize you as subscriber and forward your posting immediately, without creating any overhead.

b) If, for some reason, you cannot post from the address, by which you are subscribed, your message will be moderated to avoid spam. Please understand that moderation will often cause some delay, in particular over weekends or holydays.


----boundary-LibPST-iamunique-402911554_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIFRoYW5rcyBmb3IgeW91ciByZXBsaWVzIHJlZ2Fy
ZGluZyBpbml0aWFsaXppbmcgcmVjb3Jkcy4gXHBhcg0KXHBhcg0KQ2FsbGluZyB0aGUgV2luZG93
cyBBUEkgaW4gYSBsZXNzIGNvbnZlbnRpb25hbCB3YXkgKGluc3RlYWQgb2YgTU9EVUxFXHBhcg0K
TXlJbnRlcmZhY2UgWyJNeURsbCJdOykgYW5vdGhlciBxdWVzdGlvbiBhcm9zZTogXHBhcg0KV2hh
dCBpcyB0aGUgY2FsbGluZyBjb252ZW50aW9uIHVzZWQgaW4gQmxhY2tib3g/IElzIGl0IFtzdGRj
YWxsXSBieSBkZWZhdWx0P1xwYXINClRoZXJlIHdhcyBubyBzeXNmbGFnIHRvIHNheSBQUk9DRURV
UkUgW1dJTkFQSV0uLi5ccGFyDQpccGFyDQpNT0RVTEUgWmVyb01lbW9yeTtccGFyDQpccGFyDQpJ
TVBPUlQgUyA6PSBTWVNURU0sIFcgOj0gV2luQXBpO1xwYXINClxwYXINClRZUEVccGFyDQogIFRl
c3RSZWNvcmQgPSBSRUNPUkRbdW50YWdnZWRdXHBhcg0KICAgIHZhbHVlOiBJTlRFR0VSO1xwYXIN
CiAgICBzdHJpbmc6IEFSUkFZIDE2IE9GIFNIT1JUQ0hBUjtccGFyDQogIEVORDtccGFyDQpccGFy
DQogIFJUTFpFUk9NRU1PUlkgPSBQUk9DRURVUkUgKGFkZHJlc3M6IFcuUHRyVm9pZDsgc2l6ZTog
SU5URUdFUik7XHBhcg0KXHBhcg0KVkFSXHBhcg0KICBSdGxaZXJvTWVtb3J5OiBSVExaRVJPTUVN
T1JZO1xwYXINCiAgbW9kOiBXLkhNT0RVTEU7XHBhcg0KXHBhcg0KUFJPQ0VEVVJFIFRlc3QqO1xw
YXINClZBUlxwYXINCiAgcjogVGVzdFJlY29yZDtccGFyDQpCRUdJTlxwYXINCiAgLi4uXHBhcg0K
ICBSdGxaZXJvTWVtb3J5KFMuQURSKHIpLCBTSVpFKFRlc3RSZWNvcmQpKTtccGFyDQogIC4uLlxw
YXINCkVORCBUZXN0O1xwYXINClxwYXINCkJFR0lOXHBhcg0KICBtb2QgOj0gVy5Mb2FkTGlicmFy
eSgiS2VybmVsMzIuRExMIik7XHBhcg0KICBSdGxaZXJvTWVtb3J5IDo9IFMuVkFMKFJUTFpFUk9N
RU1PUlksIFcuR2V0UHJvY0FkZHJlc3MobW9kLFxwYXINCiJSdGxaZXJvTWVtb3J5IikpO1xwYXIN
CkVORCBaZXJvTWVtb3J5LlxwYXINClxwYXINClxwYXINClRoYW5rcyxccGFyDQpQaGlsaXBwXHBh
cg0KXHBhcg0KXHBhcg0KSW5mbzpccGFyDQpBbm90aGVyIG9wdGlvbiB3aGVyZSBTIDo9IFNZU1RF
TTpccGFyDQpQUk9DRURVUkUgTWVtU2V0IChhZGRyZXNzOiBJTlRFR0VSOyB2YWx1ZTogQllURTsg
c2l6ZTogSU5URUdFUik7XHBhcg0KVkFSXHBhcg0KICBpOiBJTlRFR0VSO1xwYXINCkJFR0lOXHBh
cg0KICBGT1IgaSA6PSBhZGRyZXNzIFRPIChhZGRyZXNzICsgc2l6ZSkgLSAxIERPXHBhcg0KICAg
IFMuUFVUKGksIHZhbHVlKTtccGFyDQogIEVORDtccGFyDQpFTkQgTWVtU2V0O1xwYXINCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHBhcg0KXHBhcg0KVG8gdW5z
dWJzY3JpYmUgZnJvbSB0aGlzIG1haWxpbmcgbGlzdCwgc2VuZCBhIG1lc3NhZ2UgY29udGFpbmlu
ZyB0aGUgd29yZCAidW5zdWJzY3JpYmUiIHRvOlxwYXINCiAgIGJsYWNrYm94LXJlcXVlc3RAb2Jl
cm9uLmNoXHBhcg0KXHBhcg0KVG8gZ2V0IGEgbGlzdCBvZiB2YWxpZCBlLW1haWwgY29tbWFuZHMg
YW5kIGluc3RydWN0aW9ucyBvbiB0aGVpciB1c2FnZSwgc2VuZCBhIG1lc3NhZ2UgY29udGFpbmlu
ZyB0aGUgd29yZCAiaGVscCIgdG8gdGhlIGFib3ZlIGFkZHJlc3MuXHBhcg0KXHBhcg0KU2VuZCBh
bnkgcHJvYmxlbSByZXBvcnRzIG9yIHF1ZXN0aW9ucyByZWxhdGVkIHRvIHRoaXMgZW1haWwgbGlz
dCB0byB0aGUgbGlzdCBvd25lciBhdFxwYXINCiAgIG93bmVyLWJsYWNrYm94QG9iZXJvbi5jaFxw
YXINClxwYXINCkN1cnJlbnQgcG9zdGluZyBwb2xpY3k6XHBhcg0KXHBhcg0KYSkgVG8gcG9zdCB5
b3Ugc2hvdWxkIHVzZSB0aGUgc2FtZSBhZGRyZXNzIGJ5IHdoaWNoIHlvdSBhcmUgc3Vic2NyaWJl
ZCB0byB0aGUgbWFpbGluZyBsaXN0LiBUaGF0IHdheSwgdGhlIGxpc3Qgc2VydmVyIHdpbGwgcmVj
b2duaXplIHlvdSBhcyBzdWJzY3JpYmVyIGFuZCBmb3J3YXJkIHlvdXIgcG9zdGluZyBpbW1lZGlh
dGVseSwgd2l0aG91dCBjcmVhdGluZyBhbnkgb3ZlcmhlYWQuXHBhcg0KXHBhcg0KYikgSWYsIGZv
ciBzb21lIHJlYXNvbiwgeW91IGNhbm5vdCBwb3N0IGZyb20gdGhlIGFkZHJlc3MsIGJ5IHdoaWNo
IHlvdSBhcmUgc3Vic2NyaWJlZCwgeW91ciBtZXNzYWdlIHdpbGwgYmUgbW9kZXJhdGVkIHRvIGF2
b2lkIHNwYW0uIFBsZWFzZSB1bmRlcnN0YW5kIHRoYXQgbW9kZXJhdGlvbiB3aWxsIG9mdGVuIGNh
dXNlIHNvbWUgZGVsYXksIGluIHBhcnRpY3VsYXIgb3ZlciB3ZWVrZW5kcyBvciBob2x5ZGF5fX0A
cyB5b3Ug


----boundary-LibPST-iamunique-402911554_-_---
Received on Mon Oct 04 2004 - 04:12:23 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:35 UTC