I am trying to use GetWindowLongPtrA but I keep getting the "Unable to find an entry point named 'GetWindowLongPtrA' in DLL 'user32.dll'". (also SetWindowLongPtrA getting the same error). I've tried many solutions found on Google, but they didn't solve it.
Here is the declaration of the function I've written:
[DllImport("user32.dll")]
public static extern IntPtr GetWindowLongPtrA(IntPtr hWnd, int nIndex);
Tried to put EntryPoint = "GetWindowLongPtrA", changed GetWindowLongPtrA to GetWindowLongPtr, put CharSet = CharSet.Ansi, switched to GetWindowLongPtrW with CharSet = CharSet.Unicode etc., They all didn't work.
My computer is exactly "64-bit" (but cannot call that 64-bit WinAPI function?). the OS is Windows 10.
But my system drive is running out of free space. Is this a possible cause?

What is the solution for this problem?
![[1]: https://i.stack.imgur.com/3JrGw.png](https://i.stack.imgur.com/Jqgh8.png)
There is no function named
GetWindowLongPtr,GetWindowLongPtrAorGetWindowLongPtrWin the 32-bit version ofuser32.dll:The reason that using
GetWindowLongPtrregardless of target bitness works C and C++ WinAPI code is that in 32-bit code it's a macro that callsGetWindowLong(A|W). It only exists in the 64-bit version ofuser32.dll:The documentation for importing
GetWindowLongPtron pinvoke.net includes a code sample for how to make this importation transparent to target bitness (remember, the error is thrown when you actually try to call the imported function that doesn't exist, not on theDllImportline):