Ответ 1
Дескриптор окон определяется как целое число собственного размера указателя машины. Это так, что они могут тайно быть указателем, если они должны быть. (Возможно, дескриптор не является указателем, но ему разрешено быть одним, если разработчики операционной системы считают это необходимым. Обычно они не являются указателями по соображениям безопасности, поэтому людям слишком легко злоупотреблять системой, если они на самом деле указатели.)
Значение int в С#, определенное как 32-битное целое число, которое будет слишком маленьким на 64-битной машине. IntPtr определяется как целое число, которое может содержать указатель размера машины. Вот почему вы всегда используете IntPtr при взаимодействии с дескрипторами.