C++で以下のように書かれているライブラリがあるとして

void Init(HANDLE* h , void** m)
void lock(HANDLE h, int count, void** m)
void unlock(HANDLE h, void** m)
void Exit(HANDLE h)

引数にポインタのポインタ変数*1で宣言されている関数
C#で記述するには、どうしたらよいかで今日一日悩んでました。

C#

[dllimport("anything.dll")]
extern static void lock(long h, int count, ??? m)

mの型を
IntPtrとか
[MarshalAs(UnmanagedType.AsAny)] objectとか
longとか宣言したけど
うまくいってない。
しかたないので
unsafeでポインタ変数をそのまま利用しようとしたけど
fixed()を使わないといけなくて、思うようにいってない

*1:海外のサイトではdouble star とかpointer to pointerと標記されているみたい