Здравствуйте, Roman_M, Вы писали:
RM>Очень даже реально. Вам не доводилось программировать вывод графики под DOS в разрешени 640x480 и выше через Linear Frame Buffer (VBE 2.0 +) ? Так вот Frame Buffer вполне может располагаться на подобных адреса, если не верите, посмотрите "Свойства системы"->"Диспетчер устройств"->"Видеоадаптеры"->"Свойства"->"Ресурсы". А также можно посмотреть ресурсы устройства "системная плата" (вроде бы нужен её номер), там адреса будут именно такими.
Неа
Речь идет о физической (!!!!!) памяти. А эти адреса — виртуальные.
"Почувствуйте разницу..." (С)Реклама на ТВ
Здравствуйте, Михаил Можаев, Вы писали:
RM>>Очень даже реально. Вам не доводилось программировать вывод графики под DOS в разрешени 640x480 и выше через Linear Frame Buffer (VBE 2.0 +) ? Так вот Frame Buffer вполне может располагаться на подобных адреса, если не верите, посмотрите "Свойства системы"->"Диспетчер устройств"->"Видеоадаптеры"->"Свойства"->"Ресурсы". А также можно посмотреть ресурсы устройства "системная плата" (вроде бы нужен её номер), там адреса будут именно такими.
ММ>Неа ММ>Речь идет о физической (!!!!!) памяти. А эти адреса — виртуальные.
Отнюдь. Эти адреса, как раз физические.
Кто Вам сказал, что все физические адреса относятся к RAM? Этот "кто" Вас обманул...
Здравствуйте, Михаил Челноков, Вы писали:
ММ>>Неа ММ>>Речь идет о физической (!!!!!) памяти. А эти адреса — виртуальные.
МЧ>Отнюдь. Эти адреса, как раз физические. МЧ>Кто Вам сказал, что все физические адреса относятся к RAM? Этот "кто" Вас обманул...
Хм..... О чём спор, уважаемые? Он беспредметен. При формулировании вопроса было указано — физический адрес. Уточню — по этому адресу хранится серийный номер материнской платы (я думаю, что биоса). И это вероятно ROM.
Здравствуйте, SPavel, Вы писали:
SP>Здравствуйте, vasketsov, Вы писали:
V>>Здравствуйте, Roman_M, Вы писали:
RM>>>есть \device\PhysicalMemory, V>>Читает именно физическую память, а не ВАП SP>Хорошо — а как им воспользоваться? В MSDN об этом написано крайне скудно SP>
SP>The PhysicalMemory property gives the size of the installed RAM in Megabytes
SP>И как я понимаю, это не совсем то, что имелось в виду под "\device\PhysicalMemory"
Да, это что-то другое. Вот ссылка на исходник от Руссиновича.
Здравствуйте, VVV, Вы писали:
SP>>С уважением, Павел
VVV>Попробуй этот скрипт (сгенерён с помощью Scriptomatic) запиши скрипт в файл baseboard.vbs и запусти cscript baseboard.vbs или просто даблкликом.
Вот, что он выдал:
Caption: Основная плата
CreationClassName: Win32_BaseBoard
Depth:
Description: Основная плата
Height:
HostingBoard: Истина
HotSwappable:
InstallDate:
Manufacturer: ASUSTeK Computer INC.
Model:
Name: Основная плата
OtherIdentifyingInfo:
PartNumber:
PoweredOn: Истина
Product: P2B-F
Removable:
Replaceable:
RequirementsDescription:
RequiresDaughterBoard:
SerialNumber: MB-1234567890
SKU:
SlotLayout:
SpecialRequirements:
Status:
Tag: Base Board
Version: REV 1.xx
Weight:
Width:
Даже не пахнет сериалом
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Здравствуйте, vasketsov, Вы писали:
V>Вот вы попробуйте из этой секции прочитать по этому адресу, тогда и поговорим.
Попробовал. То, что хотел SPavel, сидит по адресу 0x0FEC71 — он, IMHO, линейную адресацию с сегментной попутал. Но насчет старших адресов ты все равно не прав:
:PEEK d 0xfffFEC00
0x00000000 00000000000000000000000000000000 0
:PEEK d 0xfffFE000
0x72617741 01110010011000010111011101000001 1918990145
:PEEK d 0xfffFEA00
0x00000000 00000000000000000000000000000000 0
:PEEK d 0xfffFEAFF
0x00000000 00000000000000000000000000000000 0
:PEEK d 0xfffFE004
0x6F422064 01101111010000100010000001100100 1866604644
:PEEK d 0xfffFE008
0x6C42746F 01101100010000100111010001101111 1816294511
:PEEK d 0xfffFE00A
0x636F6C42 01100011011011110110110001000010 1668246594
:g
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Как нынче в Win32 с драйверами, я не знаю, но под Windows 3.11 мне приходилось писать виртуальный драйвер (именно VxD: нулевое кольцо, FLAT-модель) для доступа к физической памяти (для работы с шиной VME, адресное пространство которой отображалось в верхние адреса оперативной памяти). По другому никак не выходило, потому что и процессы, и даже виртуальные драйвера оперируют линейными адресами, которые отображаются на физические через механизм виртуальной памяти (постраничная подкачка), которым можно управлять только с уровня VxD. Конкретно я делал следующее:
1. При инициализации своего VxD вызывал функцию, отменяющую пейджинг на нужном мне диапазоне адресов, в результате чего видимые моему драйверу линейные адреса в этом диапазоне совпадали с физическими. Но эти линейные адреса доступны только VxD-драйверам во FLAT-модели, а прикладные программы оперируют каждая своим собственным линейным адресным пространством, ничего общего с FLAT-моделью не имеющим.
2. Поэтому драйвер экспортировал функции Read/WriteMemory(address, data, size), которые вызывались из прикладной программы, и выполняли собственно обращение к физической памяти. Вызов драйвера из программы представлял отдельный геморрой, про который вообще ничего не помню. Сначала, кажись, нужно было получить хэндл драйвера по имени, или что-то в этом духе, ну и т.д.
Видите, как все было просто! Интересно, изменилось ли что в Win32? Думаю, в Win9x — вряд ли.
Здравствуйте, Михаил Можаев, Вы писали:
ММ>Речь идет о физической (!!!!!) памяти. А эти адреса — виртуальные.
Шина VME фирмы Industrial Computers (один из главных субподрядчиков американской оборонки) вешает свое адресное пространство чуть ли не в 0x80000000-... Sorry, точно не помню. И перед ее базовым адресом получается приличных размеров дыра. Что не мешает системе нормально работать, непонятно каким чудом.
AA>Шина VME вешает свое адресное пространство чуть ли не в 0x80000000-... Sorry, точно не помню.
Почитав другие посты, добавлю: обращаются к ней как к обычной RAM: чтение, запись. Но эти обращения прозрачным образом передаются портам присоединенных к шине внешних устройств, или даже в адресное пространство другого компьютера, висящего на этой же шине, при этом для оповещения об изменении данных в памяти резервируется IRQ.
Здравствуйте, SPavel, Вы писали:
SP>Хм..... О чём спор, уважаемые? Он беспредметен. При формулировании вопроса было указано — физический адрес. Уточню — по этому адресу хранится серийный номер материнской платы (я думаю, что биоса). И это вероятно ROM.
Спора никакого нет, просто там, где ты поскипал, было неверное утверждение одного товарища, к твоему вопросу напрямую не относящееся.
Кстати, у меня по нужному тебе адресу находится строка
02/06/2002-i815E-W83627H-6A69RA1KC-7U
"Серийным номером" материнки это не назовешь. Дата и версия BIOS'а, не более того. Эта же строка выводится внизу экрана при включении питания.
И, IMHO, если какие-нибудь производители и прошивают серийный номер материнки куда-нить, то это жутко непортабельно. Увы...
Ткнуть?? Запросто. Читайте спецификацию DMI и SMBIOS
Там ясно сказано, как найти таблицы DMI и что где и как расположено.
таблица DMI ищется в 128 кб начиная с физического адреса 0xE0000. Ищется строка _SMBIOS_, просматриваются блоки по 16 байт, т.к. эта строка проалигнена на 16 байт. Собственно, далее идет entry-point DMI со всеми делами — указателем на таблицы и т.п. Это все разбирается, в результате получаем кучу системной инфы. И серийный номер Shassis в том числе.
V>Я вижу данные только BIOS. V>Это все — на тестовой ASUS-овской мамке, ОЗУ — 384 мега, ткните носом, где серийный номер ASUS-а?
Ну так предоставьте листинг 128 кб начиная с адреса 0xe0000 — тогда ткнем не в теории
(на самом деле DMI почти всегда находится выше 0xf000, но не все же не всегда) V> Я имел в виду на предоставленном мной листинге, а не в теории.
[]
И не собираюсь
Я просто опровергал посты, в которых это утверждалось для адресов 0xF000EC71 и 0xFEC71, первый вообще не прочитался (не знаю кто как там это пробовал делать, якобы удачно, некоторые даже под досом ), второй я вывел тут.
V>И не собираюсь
И праально.
V>Я просто опровергал посты, в которых это утверждалось для адресов 0xF000EC71 и 0xFEC71, первый вообще не прочитался (не знаю кто как там это пробовал делать, якобы удачно, некоторые даже под досом ), второй я вывел тут.
Прикол в том, что есть несколько материнских плат (IBM), в которых область DMI таблиц лежит как раз выше 0xF???????. Что это — ошибка в entry point биоса или еще что — для меня осталось загадкой. Я просто ограничил область положения DMI первыми 64 кб выше первого мегабайта. Но тем не менее — факт, что некоторые материнские платы отдают похожие адреса.
В данном случае, конечно, автор постинга скорее всего просто ошибся в адресе.
Здравствуйте, vasketsov, Вы писали:
V>Я не заю, что у Вас за PEEK и что он делает, Вам виднее, но имхо он ВАП ядра читает.
Я приводил кусок лога SoftIce'а. Если верить документации, команда PEEK читает именно по физическим адресам. В той же доке читаем "PEEK is useful for reading memory-mapped I/O registers.", которые, IMHO, и наблючаются на моем компьютере по адресам 0xfffFE000 и т.д.
V>Вот вывод програмки от Руссиновича (PHYSMEM.EXE).
V>Address: f000ec71 V>Bytes: 21 V>Could not map view of F000EC71 length 21: The parameter is incorrect.
Заметь, это PHYSMEM прочитать ничего по этому адресу не может, а ты утверждаешь, что оттуда вообще никак читать невозможно. Это немного разные вещи. Я могу придумать десяток причин, почему \Device\PhysicalMemory предоставляет доступ не по всем физическим адресам.
V>Address: fec71 V>Bytes: 21 V>000FE000: 41 77 61 72 64 20 53 6F -66 74 77 61 72 65 49 42 Award SoftwareIB
V>Я вижу данные только BIOS. V>Это все — на тестовой ASUS-овской мамке, ОЗУ — 384 мега, ткните носом, где серийный номер ASUS-а?
И где в там адрес F000EC71 или 000FEC71? Дамп ты почему-то на 000FE19F закончил.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
МЧ>"Серийным номером" материнки это не назовешь. Дата и версия BIOS'а, не более того. Эта же строка выводится внизу экрана при включении питания. МЧ>И, IMHO, если какие-нибудь производители и прошивают серийный номер материнки куда-нить, то это жутко непортабельно. Увы...
ВОТ! Именно эта информация мне и нужна! Именно эта! Тут есть дата, модель, и серийный номер. И действительно — это инфа биоса.
Скажите, пожалуйста, каким образом Вы её получили?
При загрузке BIOS не может быть спроецирован на физическую память за 0xF0000000, потому что неизвестно, поддерживает ли этот регион система. Однако, он проецируется на нижние адреса (при загрузке системы данные из BIOS, в том числе, по дискам, шинам и устройствам и выделенным для них пулам, получает ntdetect.com, которая 16-разрядная, реального режима, даже если Windows устанавливает свои порты, то не факт, что устройства будут работать, ибо они могут быть и без Plug'n'play и драйвера у них могут быть без P'n'P, так что изменение номеров портов может быть невозможным), потом диспетчер памяти организует доступ из ВАП ядра по адресу 0xFxxxxxxx так, чтобы адресовались именно биосовские страницы. Так что физически памяти 0xFxxxxxxx может не быть (у меня, например, нет), а если она и есть — уж точно там никаких биосов и устройств (если только их разработчики не совсем еще кретины) быть не может. А та память, что выделяется — из ВАП ядра, в том числе и из подкачиваемого пула, физические адреса — только нижние, ибо верхние могут не поддерживаться самими устройствами. Как пример — данные о векторах прерываний, в ВАП ядра они за 0x80000000 идут, а физически — наверное сами знаете где.
S>И где в там адрес F000EC71 или 000FEC71? Дамп ты почему-то на 000FE19F закончил.
Согласен, проглядел, вот оно:
-- more -- ('q' to abort)
000FEB60: 11 05 83 4E 16 01 E8 35 -E6 5D 07 1F 5F 5E 5A 59 ...N..ш5ц..._.ZY
000FEB70: 5B 58 CF 8A 46 0F A8 FE -75 D2 F6 06 27 00 80 74 .X¦.F.и.uTЎ....t
000FEB80: DD 34 01 04 F4 E8 24 E6 -75 CE E8 D3 F9 EB D7 80 ¦4..Їш.цu+шL•ы+.
000FEB90: 26 26 00 F8 B0 FF E8 13 -E6 75 BD E8 C2 F9 75 C6 ...°..ш.цu-шT•u¦
000FEBA0: E8 FC F9 74 B3 88 46 0E -E8 F4 F9 74 AB 88 46 0F ш.•t¦.F.шЇ•tл.F.
000FEBB0: EB 90 80 7E 0F 06 77 9A -B0 F3 E8 EF E5 75 99 E8 ы.....wЪ.єшяхuЩш
000FEBC0: 9E F9 75 A2 8D 36 DD EB -32 E4 8A 46 0F 03 F0 2E Ю•uвН6¦ы2ф.F..Ё.
000FEBD0: AC E8 D8 E5 74 02 EB 80 -E8 85 F9 EB 89 0A 14 28 мш+хt.ы.шЕ•ыЙ...
000FEBE0: 3C 50 64 C8 80 7E 0F 03 -76 03 E9 65 FF B0 E8 E8 .PdL....v.щe..шш
000FEBF0: BA E5 74 03 E9 61 FF E8 -66 F9 74 03 E9 67 FF 8A ¦хt.щa.шf•t.щg..
000FEC00: 46 0F E8 A7 E5 74 03 E9 -4E FF E8 53 F9 E9 56 FF F.шзхt.щN.шS•щV.
000FEC10: EA 00 80 08 00 65 20 49 -6E 63 2E 20 41 77 61 72 ъ....e Inc. Awar
000FEC20: 64 20 53 6F 66 74 77 61 -72 65 20 49 6E 63 2E 20 d Software Inc.
000FEC30: C3 CB 06 06 07 06 04 02 -06 07 04 02 06 04 02 05 +...............
000FEC40: 03 06 07 04 02 05 03 06 -04 02 00 05 03 01 06 07 ................
000FEC50: 04 02 00 05 03 01 2E 20 -41 E9 34 C0 64 20 53 6F ....... Aщ4Ld So
000FEC60: AA 1E 14 61 72 65 20 49 -6E 63 2E 20 41 77 61 72 ...are Inc. Awar
000FEC70: 1A 31 30 2F 32 31 2F 39 -39 2D 69 34 34 30 5A 58 .10.21.99.i440ZX
000FEC80: 2D 50 32 2D 39 39 42 2D -30 30 00 30 30 00 30 30 .P2.99B.00.00.00
000FEC90: 30 30 43 2D 30 30 00 E8 -06 00 75 03 E9 27 F6 CF 00C.00.ш..u.щ.Ў¦
000FECA0: 1E 50 B8 40 00 8E D8 F7 -06 15 00 08 00 58 1F C3 .P¬...+ў.....X.+
000FECB0: B0 F2 E8 F7 E4 74 03 E9 -9E FE E8 A3 F8 74 03 E9 .Єшўфt.щЮ.шг°t.щ
000FECC0: A4 FE E8 DA F8 74 06 88 -46 0F E9 75 FE E9 88 FE д.ш-°t..F.щu.щ..
000FECD0: 94 72 01 AA 4D 1A 4D 1A -AA 74 77 61 72 65 20 49 Фr..M.M..tware I
000FECE0: 50 32 2D 39 39 42 00 72 -64 20 20 20 00 00 77 61 P2.99B.rd ..wa
000FECF0: E9 A9 CD 50 B0 20 E6 A0 -58 CD 0A CF 64 20 53 6F щй=P. цаX=.¦d So