The type 'Uint32 Function(IntPtr, Pointer<Uint32>)' must be a subtype of 'int Function(IntPtr, Pointer<Uint32>)' for 'lookupFunction'.
class Psapi {
static final ffi.DynamicLibrary psapi = ffi.DynamicLibrary.open('psapi.dll');
static int GetWindowThreadProcessId(
ffi.IntPtr hwnd, ffi.Pointer<ffi.Uint32> lpdwProcessId) {
return psapi.lookupFunction<ffi.Uint32 Function(ffi.IntPtr hwnd, ffi.Pointer<ffi.Uint32> lpdwProcessId),
int Function(ffi.IntPtr hwnd, ffi.Pointer<ffi.Uint32> lpdwProcessId)>('GetWindowThreadProcessId')(
hwnd,
lpdwProcessId,
);
}
}
In this code int Function(ffi.IntPtr hwnd, ffi.Pointer<ffi.Uint32> lpdwProcessId)
this part shows error and says The type 'Uint32 Function(IntPtr, Pointer<Uint32>)' must be a subtype of 'int Function(IntPtr, Pointer<Uint32>)' for 'lookupFunction'
Can someone explain where it gone wrong and what's the solution. Thanks in advance.
The
lookupFunction
's second type argument represent the Dart function signature for the correspondingWin32
function. IntPtr's Dart signature would beint
. But implementing the code directly can cause error.