The correct answer for .NET 6.0 and later is CULong, and CLong for its signed counterpart.
Those two types correctly handle the differences in size of C's long
type between Windows/non-Windows and 32-bit/64-bit targets.
See https://github.com/dotnet/runtime/issues/13788 for more context.