Чтобы вызвать код C из C #, вы можете использовать атрибут DllImportAttribute для указания параметра как IntPtr:
[DllImport("mydll.dll", EntryPoint="my_c_function")]
public static extern void my_c_function(IntPtr myHandle);
[DllImport("mydll.dll", EntryPoint="my_c_function_with_out_param")]
public static extern void my_c_function(out IntPtr returnedHandle);
Просто убедитесь, что ваши функции C выглядят так:
void my_c_function(HANDLE myHandle)
{
// ....
}
void my_c_function_with_out_param(HANDLE * pReturnedHandle)
{
// ....
*pReturnedHandle = GenerateHandle();
}