C# Marshall void* that is set to NULL -
trying write wrapper c dll.
the c native signature is:
bool winapi pbm_opencard (dword* cardhandle, tchar* cardname, void* module, dword moduleid, word shareflags, word loadflags)
to documentation says: "module
set null
- reserved"
this c# signature looks like:
public static extern bool pbm_opencard(ref uint cardhandle, stringbuilder cardname, system.intptr module, uint moduleid, ushort shareflags, ushort loadflags)
what pass in module argument in c# app? tried using system.intprt.zero
, compiled, not sure if right way since can't interface hardware @ point.
your assumption correct, intptr.zero
correspond c's null
, don't forget set .net build away anycpu
match arch of native method you're linking with.
protip: use [return: marshalas]
attribute syntax set marshalling of bool
system.boolean
(though default, helps explicit). same applies parameters see it's using tchar
(which makes me die inside).
protip 2: don't forget modify method signature conform .net style conventions, including not using underscores in identifiers, pascalcase
publics , using camelcase
parameter names. consider hiding native methods consumers , wrapping them in safe idisposable
object.
Comments
Post a Comment