|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 14, 2004 10:10:58 Здравствуйте! Прочёл статью "Определение конфигурации на аппаратном уровне" (Спасибо автору за интересный материал. ;) и решил написать свою программу для определения CPUID для Windows. Я раскопал очень интересный пример от Chris Dragan, где показаны многие приёмы получения различных характеристик процессора. Вопрос такой: как можно получить имя процессора,(например Celeron II)? В исходном коде вышеуказанного автора есть такая фича, как определение имени по Vendor, но исходный код написан под TASM (Ideal mode) и некоторые фрагменты мне непонятны. Подскажите, пожалуйста, исходником для MASM как можно получить имя процессора. (Может быть есть какие-то другие возможности получения имени?) P.S. В книге В.И. Юрова в описании команды CPUID есть значения битов 4..7 и 8..11 регистра eax при: xor eax, eax inc eax cpuid но можно получить только тип процессора, но этого не достаточно для получения точной информации. Заранее благодарен! 1990 |
|
|
Дата: Июн 14, 2004 10:53:02 |
|
|
Дата: Июн 14, 2004 11:41:23 · Поправил: 1990 Asterix Спасибо! |
|
|
Дата: Июн 15, 2004 19:55:41 Очень хорошая дока по CPUID: http://www.paradicesoftware.com/specs/cpuid/index.htm Описано определение не только Intel и AMD процов, но и Cyrix, NexGen, Centaur и других x86 совместимых. |
|
|
Дата: Июн 15, 2004 22:55:16 coban2k Спасибо! Однако я никак не могу понять, как сравнить установленные биты в eax после inc eax cpuid. Подскажите, плиз, реальный пример - всё теорию я уяснил. ;) |
|
|
Дата: Июн 16, 2004 19:33:02 · Поправил: 1990 Извините, что снова спрашиваю, но никак не могу понять, что нужно сделать, чтобы прочесть злосчастные установленные байты. |
|
|
Дата: Июн 16, 2004 19:38:09 |
|
|
Дата: Июн 16, 2004 20:14:42 · Поправил: Asterix 1990 Я тебе ссылку дал, там в топике есть ссылки на мануалы интела или AMD, в них всё описано и приведены примеры на асме и С/C++, разве недостаточно? |
|
|
Дата: Июн 17, 2004 09:01:12 · Поправил: 1990 Asterix Я прошёлся по ссылкам и взял кое-что из исходников, но я никак не могу, как сравнить с такого-то по такой-то байты. Ещё раз спасибо! Благодаря ссылке я смог расширить базу процессоров. volodya Большое спасибо! Всё врубился, как осуществляется проверка. |
|
|
Дата: Окт 8, 2004 11:01:50 Еще вопросик: А если процессоров больше одного, как определить их количество? |
|
|
Дата: Окт 8, 2004 12:28:57typedef struct _SYSTEM_INFO {
union {
DWORD dwOemId;
struct {
WORD wProcessorArchitecture;
WORD wReserved;
};
};
DWORD dwPageSize;
LPVOID lpMinimumApplicationAddress;
LPVOID lpMaximumApplicationAddress;
DWORD_PTR dwActiveProcessorMask;
DWORD dwNumberOfProcessors;
DWORD dwProcessorType;
DWORD dwAllocationGranularity;
WORD wProcessorLevel;
WORD wProcessorRevision;
} SYSTEM_INFO;
SYSTEM_INFO si;
GetSystemInfo( &si );
или под NT+ typedef struct _SYSTEM_BASIC_INFORMATION { //Information Class 0
ULONG Unknown;
ULONG MaximumIncrement;
ULONG PhysicalPageSize;
ULONG NumberOfPhysicalPages;
ULONG LowestPhysicalPage;
ULONG HighestPhysicalPage;
ULONG AllocationGranularity;
ULONG LowestUserAddress;
ULONG HighestUserAddress;
ULONG ActiveProcessors;
UCHAR NumberProcessors;
}SYSTEM_BASIC_INFORMATION,*PSYSTEM_BASIC_INFORMATION;
SYSTEM_BASIC_INFORMATION sbi;
NtQuerySystemInformation( SystemBasicInformation, &sbi, sizeof(sbi), NULL );
В драйвере можно просто прочитать экспортируемую переменную KeNumberProcessors. |
|
|
Дата: Окт 18, 2004 11:21:47 · Поправил: Lord Я немного знаю, но кажись это только с использованием средств ОС. А если без ОС'и? |
|
|
Дата: Окт 18, 2004 16:47:16 а если без оси - то во втором томе интела расписана процедура. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.042 |