Имя: Пароль:
1C
1С v8
Дескрипторы в Win64x - 4х байтные или 8-ми?
0 H A D G E H O G s
 
25.07.14
14:55
Дня доброго.

Что то глуплю.

Указатели стали либо 8 байтные либо 4-х.
А дескрипторы?
Судя по
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx
и строке

точно также.

Теперь вопрос - это просто для унификации, ведь в 32-х разрядных приложениях (которые надо поддерживать) 4 старших байта тупо не используются?
1 H A D G E H O G s
 
25.07.14
14:56
И строке: HWND IntPtr
2 H A D G E H O G s
 
25.07.14
14:56
3 Trotter
 
25.07.14
15:01
(0) BYTE A byte (8 bits).
4 Trotter
 
25.07.14
15:03
(0) Вы решили уйти из 1С ?
5 H A D G E H O G s
 
25.07.14
15:04
(3) Че это?
6 Trotter
 
25.07.14
15:11
не совсем понятен вопрос, если хотите узнать сколько весит в памяти int? напишите простенькую программку под выделения одной переменой и посмотрите.
7 acsent
 
25.07.14
15:20
#if defined(_WIN64)
typedef __int64 INT_PTR;
#else
typedef int INT_PTR;
#endif
8 H A D G E H O G s
 
25.07.14
15:23
Интересно, зачем они сделали их 8 байтными.
9 acsent
 
25.07.14
15:28
Зачем HWND имеет тип IntPtr?
10 H A D G E H O G s
 
25.07.14
15:31
(9) Да
11 Кирпич
 
25.07.14
15:51
А почему в 32-х разрядных 4-байтные? Это ведь тоже очень интересно.
12 H A D G E H O G s
 
25.07.14
15:53
2-х байтных не хватило
13 Serginio1
 
25.07.14
16:03
14 Кирпич
 
25.07.14
16:05
(12) ну значит и 4 байтных теперь нехватило
15 бомболюк
 
25.07.14
16:06
что то помнится мне что для некоторых типов хендлов (вроде HINSTANCE) его значение напрямую связано с адресом ячейки памяти, так что эти типы очень тесно связаны.
16 ДенисЧ
 
25.07.14
16:08
(15) В вин64 - прямая адресация?
Тебя когда заморозили, если только что разморозили?
ПРямая адресация была только в досе и вин 2, что работала в реальном режиме...
17 orefkov
 
25.07.14
16:17
(16)
Имеется ввиду виртуальная память. Да, в винде HINSTANCE модуля есть адрес его расположения в адресном пространстве процесса. Собственно, потому HINSTANCE в одном процессе бесполезен в другом.
Многие хендлы скорее всего также раньше напрямую указывали на адреса связанных с ними данных. Потому в win64 и стали 8-байтными.
(11)
32 / 8 == 4
18 бомболюк
 
25.07.14
16:22
во, точно. HInstance модуля - это указатель на структуру IMAGE_DOS_HEADER.
19 H A D G E H O G s
 
25.07.14
16:54
(17) Да, в винде HINSTANCE модуля есть адрес его расположения в адресном пространстве процесса.


Вот это поворот, не знал.
20 oleg_km
 
25.07.14
17:47
(19) По-моему, это недокументированная фича.
Закон Брукера: Даже маленькая практика стоит большой теории.