Некоторые имена доменов верхнего уровня

Точно так же 32-битное программное обеспечение (как правило, очень старые программы) могут содержать некоторый 16-битный код. Как правило, такие программ будут выполняться с ошибками на 64-битной ОС.

Можно ли запустить 16-разрядное приложение или код на 64-битных системах?

Нет, как это уже говорилось, 16-битный код не запустится на 64-битной ОС потому, что обратная совместимость предусмотрена только для 32-бит. Это одна из причин, почему некоторые 32-разрядные приложения не будут выполняться на 64-битных операционных системах.

Можно ли запустить 64-разрядную виртуальную машину на 32-битной ОС с 64-битным процессором?

Да. Все зависит от уровня виртуализации. С программной виртуализации это вряд ли получится. Даже если у вас получится запустить систему, то все будет очень медленным. Единственный полноценный способ - это аппаратная виртуализация, но ее должен поддерживать BIOS вашего компьютера.

Ответы на часто задаваемые вопросы о 32- и 64-битных ОС Windows

Сноска: данный раздел содержит ответы на распространенные вопросы. Если вы внимательно читали предыдущий раздел, то вполне можете самостоятельно ответить на часть из них.

Могу ли я запустить Windows 2000 и Windows XP на 64-битных процессорах, а также использовать старое программное обеспечение?

Да, 32-разрядная операционная система будет успешно стартовать на 64-битных процессорах. И вы так же сможете запускать старые программы на 64-битных ОС.

Как узнать, является ли система 64-разрядной?

Для того, чтобы узнать, какая у вас установлена операционная система, вы можете использовать ЧаВО Microsoft , а так же специальную программу Gibson Research Corporation (GRC). Последняя покажет вам не только информацию о разрядности, но и о поддержки компьютером аппаратной виртуализации.

Подходят ли старые драйверы устройств для ОС Windows 64-бит?

Можно ли перенести 32-битную систему на 64-разрядную Windows?

Как такового, Microsoft не предоставляет никакого механизма. Поэтому вам придется самостоятельно переносить данные с одной системы на другую, а так же заново установливать все программы.

Как альтернативный вариант, вы можете использовать мультизагрузку или виртуализацию.

Как узнать, приложение является 32- или 64-битным?

Существует несколько базовых признаков, по которым можно узнать разрядность приложения, но они не являются окончательными.

  • Windows устанавливает программы в эти каталоги на системном диске:
    • "\Program Files" для 64-битных программ
    • "\Program Files (x86)" для 32-битных программ
  • В диспетчере задач, 32-битные процессы, как правило, имеют приставку "*32", а 64-разрядные нет

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

Кроме того, определение компонента происходит по настройкам реестра, а не по настройкам инсталлятора. По умолчанию, Windows предполагает, что все компоненты являются 32-разрядными, если не указано иное. Это означает, что если 64-битный компонент, во время установки, не был помечен, как 64-разрядный, то он будет установлен в папку для 32-битных приложений и будет использовать ключи реестра для 32-битных приложений. Тем не менее, процесс будет выполняться как 64-битный.

Поэтому лучше всего использовать одно из следующих решений:

  • Запустите программу для аудита системы. Например, из обзора Лучшие бесплатные программы для сбора информации о компьютере (системе) .
  • Вы можете использовать программу PEStudio . Прежде всего, это инструмент для анализа безопасности программы. Но, он так же позволяет узнать достаточно много технической информации, включая разрядность приложений.
  • Если вам необходимо более подробно узнать об используемых программой модулей, то вы можете использовать Dependency Walker , который является частью средств разработки Microfoft, таких как Visual Studio.
  • Windows Software Development Kit (SDK) содержит утилиту под названием DumpBin, которую так же можно использовать для определения разрядности приложения. Для этого необходимо запустить следующую команду в консольной строке , и после строки "FILE HEADER VALUES" посмотреть название заголовка: machine (x64) - 64-битная программа, machine (x86) - 32-битная программа
    • dumpbin /headers "путь к программе"
  • Вы так же можете использовать такие инструменты, как Microsoft Proccess Explorer (см. диспетчеры задач). Они предоставляют гораздо больше информации, нежели обычный диспетчер задач Windows. Узнать разрядность программы вы можете из свойств процесса.


Каковы различия между 32- и 64-битными версиями Windows?

Все основные физические и логические различия между версиями различных версий Windows представлены в таблице 5 (находится ниже). Так же таблица наглядно показывает тот путь улучшений, который прошла Windows, и что Windows еще нужно пройти долгий путь прежде, чем она сможет исчерпать возможности 64-разрядных процессоров.

Многие из ограничений 64-разрядных версий Windows являются ограничением системы, а не ограничением процессоров. Количество физических процессоров остается неизменным, в основном из-за того, что это прерогатива Windows Server.

Тем не менее, аппаратные устройства так же имеют ограничения. Например, в то время как 64-битные AMD и Intel процессоры используют 64-битные указатели памяти, поддерживающие их чипсеты используют только 52-битный физический адрес (4 петабайт) и 48-разрядный адрес виртуальной памяти (256 терабайт). В настоящее время, это более чем достаточно. Windows 7 64-бит поддерживает только 192 ГБ физической памяти и 16 терабайт (44-бит) виртуальной памяти.

Таблица 5: Физические и логические ограничения версий Windows,
Цифры в скобках указывают расширенные настройки, которые не установлены по умолчанию и требуют наличия совместимого оборудования
Версия: XP Vista 7
Разрядность: 32 64 32 64 32 64
Система:
Физические процессоры 2 2 2 2 2 2
Логические процессоры 32 64 32 64 32 256
Системный кэш 1 ГБ 1,024 ГБ 1 (2) ГБ 1,024 ГБ 1 (2) ГБ 1,024 ГБ
Физическая память 4 ГБ 128 ГБ 4 ГБ 128 ГБ 4 ГБ 192 ГБ
Виртуальная память 4 ГБ 16,384 ГБ 4 ГБ 16,384 Гб 4 ГБ 16,384 Гб
Ядро 1 (2) ГБ 8 ГБ 2 ГБ 8 ГБ 2 ГБ 8 ГБ
Пользовательские процессы:
Физическая память 2 (3) ГБ 2 (4) ГБ 2 (3) ГБ 8 ГБ 2 (4) ГБ 8 ГБ
Виртуальная память 2 (3) ГБ 2 (8,192) ГБ 2 (3) ГБ 2 (8,192) ГБ 2 (4) ГБ 2 (8,192) ГБ

Примечание : В таблице умышленно не использовалась аббревиатура 1 ТБ (1024 Гб), что бы проиллюстрировать динамику.

Примечание : Из рассмотрения так же была исключена первая 64-битная версия Windows XP (2002), поскольку она имеет другую архитектуру. Система использовала Intel Itanium (IA-64) процессоры, которые имели x86 процессор для совместимости. В последствии он был заменен 64-битной архитектурой AMD (x86-x64), которая расширила набор команд x86 и была так хороша, что была лицензирована Intel и другими производителями. Эта архитектура до сих пор является наиболее распространенной.

Можно ли выделить больше памяти для программы/процесса в 32-разрядном Windows, как показано в таблице 5?

Да, можно. И вот пример.

Если вы используете MySQL на Windows, то вы можете использовать Address Windowing Extensions (AWE), которое поддерживается MySql. AWE увеличивает максимальный размер памяти пользовательского процесса от 2 ГБ до 3 ГБ (см. таблицу 5). Это позволит MySQL использовать на 50% больше памяти.

Однако помните, что это применимо не на всех версиях 32-битной Windows, и что необходимо перекомпилировать MySQL.

Можно ли выделить более 4 Гб оперативной памяти в 32-битной Windows?

Вы можете использовать Physical Address Extension (PAE) для расширения поддерживаемого объема оперативной памяти. PAE увеличивает размер адреса с 32 бит до 36 бит, что позволяет использовать порядка 64 Гб.

PAE настраивается в BIOS-е вашего компьютера, так что его можно применять для любых операционных систем, включая Linux и Apple OS X.

32-битная Windows использует PAE, но имеет внутреннее ограничение на 4 ГБ. Существуют утилиты, которые позволяют убрать этот предел, но их стоит применять с крайней осторожностью и только в безвыходных ситуациях.

Теперь, вы знаете о 32-битах и 64-битах, а так же об их совместимости и особенностях использования.


| §4.2 Как устроен Интернет...

Уроки 25 - 26
§4.2 Как устроен Интернет
IР-адрес компьютера
Доменная система имен
Протоколы передачи данных

Ключевые слова:

Интернет
протокол
IP-адрес
доменное имя
протокол IP
протокол TCP

4.2.1. Как устроен Интернет

Интернет (англ. Internet, от лат. inter - между и англ. net - сеть) - всемирная компьютерная сеть, соединяющая вместе множество локальных, региональных и корпоративных сетей . Каждая входящая в Интернет сеть имеет свой собственный эксплуатационный центр, который отвечает за работу данного регионального участка Интернета. У каждой из этих сетей может быть владелец, но Интернет в целом не принадлежит никому. Координирует развитие всемирной сети общественная организация Сообщество Интернета (ISOC - Internet Society) .

Надёжность функционирования сети Интернет обеспечивается наличием большого количества каналов передачи информации между входящими в неё локальными, региональными и корпоративными сетями.

Для того чтобы подключить к сети Интернет свой домашний компьютер, необходимо воспользоваться услугами интернет - провайдера . При каждом выходе пользователя в Интернет его компьютер соединяется с компьютерной системой провайдера.

Интернет соединяет различные модели компьютеров , с разным программным обеспечением. Это возможно благодаря реализации в программном обеспечении особых соглашений (правил), называемых протоколами .

4.2.2. IP-адрес компьютера

Каждый компьютер, подключённый к Интернету, получает свой уникальный 32-битовый идентификатор, называемый IP-адресом . Таких адресов более 4 миллиардов (2 32 - 1 = 4 294 967 295). Человеку, в отличие от технических систем, сложно работать с длинными цепочками из нулей и единиц. Поэтому вместо 32-битового представления мы используем запись IP-адреса в виде четырёх десятичных чисел (от 0 до 255), разделённых точками, например 204.152.190.71. Для осуществления такого перехода 32-битовая запись разбивается на четыре части (по 8 бит), каждая из которых как 8-разрядное двоичное число переводится в десятичную систему счисления.

Как правило, при каждом выходе в Интернет ваш компьютер получает новый IP-адрес. Информация о том, когда и какие IР-адреса присваивались вашему компьютеру, сохраняется у провайдера.

Чтобы узнать свой текущий IP-адрес во время интернет-сеанса, достаточно набрать http://yoip.ru в адресной строке браузера.

Интернет является сетью сетей, и система IP-адресации учитывает эту структуру: IP-адрес состоит из двух частей, одна из которых является адресом сети, а другая - адресом компьютера в данной сети. Для более детального рассмотрения структуры IP-адреса рекомендуем ознакомиться с анимационным роликом «Демонстрация IP-адресации» (192564), размещённым в Единой коллекции цифровых образовательных ресурсов.

Задача . Петя записал IP-адрес школьного сервера на листке бумаги и положил его в карман куртки. Петина мама случайно постирала куртку вместе с запиской. После стирки Петя обнаружил в кармане четыре обрывка с фрагментами IP-адреса. Эти фрагменты обозначены буквами А, Б, В и Г. Восстановите IP- адрес. В ответе укажите последовательность букв, обозначающих фрагменты, в порядке, соответствующем IP-адресу.

Решение

Исследуем возможные комбинации фрагментов адреса с учётом того, что каждое из четырёх чисел в IP-адресе не должно превышать 255.

Так как адрес не может начинаться с точки, в качестве первого фрагмента совершенно точно нельзя использовать фрагмент Б.

Получаем возможные варианты:

Фрагмент Б не может находиться на втором месте, так как он заканчивается на 50 и добавление к нему справа первой цифры любого из оставшихся фрагментов приведёт к образованию числа, превышающего 255.

Если в качестве первого взят фрагмент А, то после него совершенно точно не может следовать фрагмент Г (в противном случае получается число 1922 > 255). Если в качестве первого взят фрагмент В, то после него не может следовать ни один из оставшихся фрагментов.

После фрагмента Г может следовать любой из фрагментов А и В.

Получаем возможные варианты:

После фрагмента АВ мог бы следовать только фрагмент Б, но в рассматриваемом примере он не может быть третьим (по той же причине, что и вторым). По этой же причине после фрагмента ГА может следовать только фрагмент В (фрагмент Б мы исключаем из рассмотрения). После ГВ не могут следовать ни А, ни Б.

Таким образом, существует единственный способ соединения имеющихся фрагментов: ГАВБ. Соответствующий адрес имеет вид: 222.195.162.50

4.2.3. Доменная система имён

Наряду с цифровыми IP-адресами в Интернете действует более удобная и понятная для пользователей доменная 1) система имён (DNS - Domain Name System), благодаря которой компьютеры получают уникальные символьные адреса.

Доменная система имеет иерархическую структуру: домены верхнего уровня, домены второго уровня и т. д. (рис. 4.2).

1) Домен - область Интернета (от фр. dominion - область) .


Рис. 4.2. Иерархическая структура доменных имён


Домены первого уровня бывают двух видов: административные (трёхбуквенный код для организаций определённого типа) и географические (двухбуквенный код для каждой страны) - табл. 4.1.

Таблица. 4.1

Некоторые имена доменов верхнего уровня

Полное доменное имя состоит из непосредственного имени домена и далее имён всех доменов , в которые он входит, разделённых точками.

Пример. Полное имя fcior.edu.ru обозначает домен третьего уровня fcior , входящий в домен второго уровня edu , принадлежащий домену верхнего уровня ru (рис. 4.3).

Рис. 4.3. Полное доменное имя


Для более полного знакомства с доменными именами рекомендуем ознакомиться с анимационным роликом «Организация пространства имён» (192876), размещённым в Единой коллекции цифровых образовательных ресурсов.


Чтобы узнать IP-адрес заинтересовавшего вас веб-сайта, достаточно выполнить команды Пуск → Все программы → Стандартные → Командная строка и в появившемся окне Командная строка ввести команду ping и доменное имя сайта . Например, набрав ping www.konkurskit.ru, вы получите IP-адрес сайта конкурса «КИТ».

4.2.4. Протоколы передачи данных

Для того чтобы передача информации от одного компьютера к другому не занимала сеть надолго, файлы по сети передаются небольшими порциями - пакетами.

Передаваемые пакеты постепенно добираются до своего адресата, попадая с одного сервера на другой, причём на каждом сервере производится операция маршрутизации , т. е. определение адреса следующего сервера, наиболее близкого к получателю, на который можно переслать этот пакет (рис. 4.4). Маршрутизацию пакетов позволяет осуществлять протокол IP .

Рис. 4.4. Пакетная передача данных


Так как пакеты передаются независимо друг от друга, каждый пакет может дойти до адресата по своему пути. На конечном пункте все пакеты собираются в один файл. Если какого-либо пакета не хватает, компьютер-адресат посылает запрос на компьютер-отправитель с сообщением, какой пакет отсутствует. Нужный пакет заново посылается адресату. Установление надёжной передачи сетевых пакетов между двумя компьютерами обеспечивает протокол TCP.

Более полное представление о том, как передаётся информация в Интернете, вы можете получить, познакомившись с анимационными роликами «Протокол IP» (192655), «Сетевой уровень. IP-маршрутизация» (192947), «Демонстрация протокола ТСР» (192744), размещёнными в Единой коллекции цифровых образовательных ресурсов.


Таким образом, все сети, которые подключаются к Интернету, используют для соединения протоколы:
TCP (Transmission Control Protocol) - транспортный протокол ;

IP (Internet Protocol) - протокол маршрутизации .

Как правило, эти протоколы используются вместе и практически неотделимы друг от друга. Поэтому для них используется термин «протокол TCP/IP ».

САМОЕ ГЛАВНОЕ

Интернет - всемирная компьютерная сеть, соединяющая вместе множество локальных, региональных и корпоративных сетей, в состав которых могут входить разные модели компьютеров. Это возможно благодаря реализации в программном обеспечении компьютеров особых соглашений (правил), называемых протоколами.

Каждый компьютер, подключённый к Интернету, имеет свой IP-адрес - уникальный 32-битовый идентификатор.

DNS - доменная система имён ; благодаря ей компьютеры получают уникальные символьные адреса.

По сети файлы передаются небольшими порциями - пакетами . Маршрутизацию пакетов позволяет осуществлять протокол IP. Установление надёжной передачи сетевых пакетов между двумя компьютерами обеспечивает протокол TCP.

Вопросы и задания

1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Дополняет ли презентация информацию, содержащуюся в тексте параграфа?

2. Что такое Интернет?

3. Благодаря чему в сети Интернет удаётся соединять различные модели компьютеров с разным программным обеспечением?

4. Для чего нужен IP-адрес?

5. Каким образом осуществляется переход от 32-битового IP-адреса к его записи в виде четырёх десятичных чисел?

6. Запишите в тетради 32-битовый IP-адрес в виде четырёх десятичных чисел, разделённых точками:

1) 11001100 10011000 10111110 01000111;
2) 11011110 11000011 10100010 00110010.

7. Запишите в тетради IP-адрес из четырёх десятичных чисел в 32-битовом виде:

1) 210.171.30.128;
2) 10.55.0.225.

8. Петя записал IP-адрес школьного сервера на листке бумаги и положил его в карман куртки. Петина мама случайно постирала куртку вместе с запиской. После стирки Петя обнаружил в кармане четыре обрывка с фрагментами IP-адреса. Эти фрагменты обозначены буквами А, Б, В и Г. Восстановите IP-адрес. В ответе укажите последовательность букв, обозначающих фрагменты, в порядке, соответствующем IP-адресу.

9. Опишите структуру доменной системы имён.

10. Проанализируйте следующие доменные имена:

1) school-collection.edu.ru
2) ru.wikipedia.org
3) www.ictedu.cn

11. Опишите процесс маршрутизации и транспортировки данных по компьютерным сетям.

12. Укажите все возможные маршруты доставки интернет-пакетов от сервера И (источник) к серверу П (приёмник) через серверы 1, 2, 3, 4 с учётом имеющейся архитектуры сети.

Краткая справочная информация. Я разрабатываю С# в VS2008 под.net 3.5 на машине Vista-x64.

Недавно я перешел на Vista-x64, и после некоторого поиска я все еще чувствую, что не совсем понимаю взаимодействие между ОС и инфраструктурой.net. Я хотел бы получить некоторые исправления/разъяснения относительно этого.

Ниже приводится мое понимание процесса разработки (пожалуйста, исправьте, если я ошибаюсь):

Когда я настраиваю свой проект, я могу установить целевую платформу: x64, x86, AnyCpu. Насколько я понимаю, AnyCpu будет нацеливаться на текущую платформу (в моем случае x64). Я также могу настроить x86 и выполнить его (из-за WoW64).

Я предполагаю, что когда я нацелен на x64, программа будет использовать 64-разрядную.net framework 3.5 и аналогичную 32-разрядную среду для x86. Правильно ли это?

Что меня смущает, когда я нацелен на x64 и распечатываю информацию о платформе, он печатает " WIN32NT ". Это заставляет меня думать, что " WIN32NT " не так, как я думаю, но я не смог многое узнать об этом. Что это?

ComputerInfo computerInfo = new ComputerInfo(); Console.WriteLine("{0,-30}:\t{1}", "Platform", computerInfo.OSPlatform);

4 ответа

Это действительно не помогает, но все среды возвращают win32nt... было бы полезно, если бы они вернули win64nt, не так ли?

Вы находите какие-то другие проблемы? Или просто ищете знания здесь?

Попробуйте проверить размер IntPtr. Это даст вам знать, работает ли ваше приложение в режиме 64 бит (я думаю)

Обычно вам нужно настроить таргетинг на AnyCPU - AnyCPU запускается в режиме "native" целевой системы. Если вы запускаете приложение на 32-битной машине, оно будет работать в 32 бит, если вы начнете работу на 64-битной системе, оно будет работать в 64 бит.

Единственной причиной использования одного из других параметров является конкретная необходимость запускать 32 или 64 бита. Это произойдет, если вы используете библиотеку с конкретными требованиями. Например, эта библиотека SQLITE содержит неуправляемый код. Когда я использовал его в приложении, которое было скомпилировано в AnyCPU, приложение отлично работало на 32-битной системе, но не могло загрузить библиотеку в 64-разрядную систему. Причина в том, что неуправляемый код в библиотеке Sqlite скомпилирован до 32 бит. Даже в.net вы не можете смешивать 32 и 64-битные сборки.

В этом случае правильным решением было явно скомпилировать x86 (это небольшой инструмент, который не мог бы работать от 64 бит). Таким образом, мое приложение работает как 32-битное приложение даже на 64-битной Windows.

Еще одной возможностью было бы скомпилировать приложение в AnyCPU, но обрабатывать разные платформы явно, например, путем задержки загрузки правильной неуправляемой сборки.

Помимо таких эффектов с неуправляемым кодом, я считаю, что в значительной степени не имеет значения, для какой структуры скомпилировано приложение. На ум приходят только экстремальные контрпримеры, возможно, вам захочется скомпилировать приложение на x64, требующее безумного объема ОЗУ. Но типичное приложение run-off-the-mill.net не заботится о том, какой процессор и какой режим он запускается. Но если вы хотите узнать, вы всегда можете проверить размер IntPtr, как предложено в других ответах.

AnyCpu не нацелен на текущую платформу разработчика. Он нацелен на любой процессор, как он говорит. Компилятор JIT, запущенный на целевой машине, скомпилирует IL в 32-битные или 64-битные команды, установленные в соответствии с операционной системой целевой машины. Это означает, что сборка.Net, скомпилированная как AnyCpu, будет работать как на 32, так и на 64-битной платформе.

Переход от 16-разрядных версий Windows к 32-разрядным начался в начале 90-х годов прошлого столетия с появлением Windows NT, и набрал ускорение после того, как использование Windows 95 стало обычным делом. Каким бы соблазнительным ни казалось предположение о том, что нас ожидает повторение той же истории, рассматриваемые нами ситуации отличаются в нескольких аспектах.

Windows NT и Windows 95 были первыми из широко используемых "реальных" операционных систем для PC в том смысле, что обе системы поддерживали обмен страницами по запросу, потоки, вытесняющую многозадачность и множество других возможностей, которые были описаны в главе 1.

Хотя API Win32 значительно расширил полезное адресное пространство, что делает и Win64, усовершенствования этим не ограничивались. Неуклюжие и устаревшие, несмотря на свою популярность, модели расширенной памяти были заменены другими. Аналогичная модель расширенной памяти (не описывается в данной книге) была введена и в Windows 2000, однако общие последствия этого шага в данном случае были не столь существенными.

В API Win32 было введено множество новых функциональных возможностей, чего нельзя сказать о Win64.

Надолго ли хватит 64 бит?

Что касается мира PC, в котором возникла Windows, то можно утверждать, что первоначальная 16-разрядная модель Intel x86 (фактическое адресное пространство которой является 20-битовым) просуществовала в течение более десяти лет, и столько же времени уже существует и 32-разрядная архитектура. Однако переход к Win64 и 64-разрядному программированию, вообще говоря, происходит медленнее, чем происходил аналогичный переход к 32 битам. Вместе с тем, в обоих случаях переход миникомпьютеров и серверов на следующий уровень осуществлялся, по крайней мере, за 10 лет до того, как это начинало происходить с PC. Тогда вполне естественно задаться вопросом о том, следует ли ожидать перехода серверов или PC к 128 битам в будущем. Берусь утверждать, что любое расширение такого рода произойдет не раньше, чем через 10 лет, исходя из одной лишь величины 64-разрядного адресного пространства.

Предсказания - вещь ненадежная, однако, воспринимая это серьезно лишь наполовину, можно напомнить о часто цитируемом законе Мура, согласно которому отношение "стоимость/производительность" уменьшается вдвое каждые 18 месяцев. В свою очередь, быстродействие и емкость устройств каждые 18 месяцев примерно удваиваются. Применяя эти рассуждения к адресному пространству, можно ожидать, что дополнительный бит адреса нам будет требоваться через каждые 18 месяцев, откуда следует, что 64-разрядная модель будет исправно служить еще целых 48 лет (то есть почти столько же времени, сколько насчитывает вся история современных компьютеров). Оправданы ли такие неформальные выводы, которые встретились мне в одном из официальных источников, покажет время, однако в прошлом запросы к ресурсам PC возрастали гораздо быстрее, чем утверждается в приведенном прогнозе.

Модель программирования Win64

В зависимости от выбора способа представления таких стандартных типов данных С, как указатели и целочисленные типы данных (long, int и short), a также от того, вводятся или не вводятся нестандартные типы данных, возможны несколько вариантов модели 64-разрядного программирования. Напомним, что в стандарте ANSI С размеры типов данных не определяются строго, хотя и требуется, чтобы размер данных типа long int был не меньше размера данных типа int, а размер данных типа int был не меньше размера данных типа short int.

Цели

Цель состоит в том, чтобы ввести единое определение Windows API (то есть, общее для Win32 и Win64), благодаря чему можно будет использовать единый базовый исходный код. Использование этого единого определения может потребовать внесения некоторые изменений в исходный код, но эти изменения должны быть сведены к минимуму.

Microsoft выбрала модель LLP64 (целые числа типа long и 64-битовые указатели), на которую обычно ссылаются просто как на модель Р64. В частности, существуют следующие определения типов данных, применимые как к данным со знаком, так и к данным без знака:

Char - 8 бит, и wchar - 16 бит.

Short - 16 бит.

Int - 32 бита.

Long int - также 32 бита.

Размер указателя любого типа, например PVOID, составляет 64 бита.

Для тех случаев, когда требуются данные строго определенного размера, предусмотрены дополнительные типы данных. Так, компилятор Microsoft различает следующие типы данных: _int16, _int32 и _int64.

Типы данных

Приведенные в этой главе таблицы взяты непосредственно из оперативной справочной системы и представляют единую модель данных Windows (Windows Uniform Data Model). Определения типов можно найти в заголовочном файле BASETSD.H, входящем в состав интегрированной среды разработки приложений Microsoft Visual Studio .NET (версия 7.0) и версию 6.0 этой системы.