Отличается ли Win32API 32-разрядная версия и 64-битная версия?

Кажется, все win32 api - это 32-разрядная версия, неважно, что мои установленные окна - 32-битные или 64-битные. Если я назову «CreateWindow», возвращаемая HANDLE будет postruct {int unused; }; er в _HANDLE, которая является структурой struct {int unused;}.

Таким образом, оба 32-битных окна и 64-битные окна используют windows api, который управляет ресурсом в 32-битном стиле, не так ли?

Если это так, то верхнее предельное количество файлов / GUI HANDLE для процесса одинаково между 32/64-битными окнами? Другими словами, помимо наличия большей памяти, 64-битный процесс Windows не может содержать больше системных ресурсов по сравнению с 32-битным процессом?

Благодарю.

windows,api,resources,64bit,handle,

0

Ответов: 1


2 принят

Кажется, все win32 api - это 32-разрядная версия, неважно, что мои установленные окна - 32-битные или 64-битные.

Это неверно, и пример, который вы предоставляете ( void*), также показывает это: это указатель , поэтому он имеет 64 бита в 64-разрядной версии Windows. Тот факт, что он указывает на какую-то произвольную структуру 1 ( HANDLE), не имеет значения. Содержимое структуры не используется 2 .

С этой точки зрения вы можете видеть, что теоретический максимум объектов ядра, на которые ссылается HANDLEтип, выше в 64-битной Windows, чем на 32-разрядной Windows. Практические пределы обычно ниже, чем по многим причинам. Слишком много, чтобы перечислить их все, но вот сборник связанных статей вам может показаться интересным:


1 Эта структура используется, только если установлен макрос препроцессора STRICT . Если это не так, a HANDLE- это просто typedef для a int.
2 Структура служит для предотвращения определенных категорий ошибок программиста, как и присвоение HANDLEк int. Внутренняя система, это значение дескриптора, которое имеет смысл.

окна, апи, ресурсы, 64bit, ручка,
Похожие вопросы