Ir para conteúdo
Fórum Script Brasil
  • 0

Informação Sobre O Hardware


Heldinho

Pergunta

Ae, estou aki de volta, pra dizer que o OS que estou criando com a ajuda de vocês já está na versão 0.7 (www.whbros.whbr.cjb.net), e preciso mais ainda da ajuda de vocês, pois ele não ficou tão rápido quanto eu esperava, então, preciso saber quantos mhz o processador do usuario tem, para poder carregar ele com a interface básica ou não, e também preciso saber o fabricante e modelo da placa de vídeo do cara, tipo , SIS 630.. Isto é para mim criar os Drivers de vídeo para cada placa, e também um Genérico que roda o OS em 640x480.. Criar eu sei, preciso só da informação da placa de vídeo pra "Validar" a compatibilidade do driver...

Obrigado,

Heldinho.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Que eu me lembre, esse é o sistema operacional que roda em cima do Windows, né? laugh.gif

Que louco. Enfim, se for isso mesmo, saiba que o windows já quebrou esse galho calculando e armazenando a informação no Registry. Basta saber acessá-la. Se você quiser calcular mesmo, aí posta, que tb tem como.

Pois é, se você souber acessar o registry, dá uma procurada em:

HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0\~MHZ

O valor tá em hexadecimal.

Se não souber, pergunta ae.

[]'s

iSoron.

Link para o comentário
Compartilhar em outros sites

  • 0

Em DOS? Bem... daria pra descobrir a velocidade. Placa de vídeo é bem mais complicado, pois quem informa não é o hardware, e sim o driver. Sendo assim, você teria que criar os seus drivers, já que os pra DOS são meros "VGA Card"s.

Taí um código que calcula o clock da CPU:

float CGettheProcessorSpeedDlg::ProcSpeedCalc()

{

/*

RdTSC:

It's the Pentium instruction "ReaD Time Stamp Counter". It measures the

number of clock cycles that have passed since the processor was reset, as a

64-bit number. That's what the <CODE>_emit lines do.*/

#define RdTSC __asm _emit 0x0f __asm _emit 0x31

// variables for the clock-cycles:

__int64 cyclesStart = 0, cyclesStop = 0;

// variables for the High-Res Preformance Counter:

unsigned __int64 nCtr = 0, nFreq = 0, nCtrStop = 0;

    // retrieve performance-counter frequency per second:

    if(!QueryPerformanceFrequency((LARGE_INTEGER *) &nFreq)) return 0;

    // retrieve the current value of the performance counter:

    QueryPerformanceCounter((LARGE_INTEGER *) &nCtrStop);

    // add the frequency to the counter-value:

    nCtrStop += nFreq;

    _asm

        {// retrieve the clock-cycles for the start value:

            RdTSC

            mov DWORD PTR cyclesStart, eax

            mov DWORD PTR [cyclesStart + 4], edx

        }

        do{

        // retrieve the value of the performance counter

        // until 1 sec has gone by:

            QueryPerformanceCounter((LARGE_INTEGER *) &nCtr);

          }while (nCtr < nCtrStop);

    _asm

        {// retrieve again the clock-cycles after 1 sec. has gone by:

            RdTSC

            mov DWORD PTR cyclesStop, eax

            mov DWORD PTR [cyclesStop + 4], edx

        }

// stop-start is speed in Hz divided by 1,000,000 is speed in MHz

return    ((float)cyclesStop-(float)cyclesStart) / 1000000;

}

Nunca testei, não sei se funciona, mas, como dá pra ver, envolve muito assembly.

Já era de se esperar, sendo uma função tão baixo nível. Me resta saber se isso só vale pra Pentiums...

ps.: A função QueryPerformanceCounter é pra windows, então nada feito. Talvez você possa realizar milhoes de operações simples e medir o tempo. Depois você compara com um clock conhecido e tira a proporção.

[]'s

iSoron.

Link para o comentário
Compartilhar em outros sites

  • 0

P00tz, você é rapido no gatilho, foi só eu reiniciar!!.. Isso é C++!? não entendi quase nada do código.. vou tar uma olhada na interrupção 0x31 do assembly pra ver o que posso fazer.. De qualquer forma, vo ver se meu gcc compila isso tb.. até + e obrigado!! quanto as placas de vídeo, eu imagino que elas tenham um "ID", não? pois se não, como o windows indicaria se o driver é ou não compativel com a placa.. é isso q keru fazer no whbros.. até mais!

Editado:

sad.gif - não tem nada sobre int 31h no meu "manual", o help pc.. pootz, será que vai funcionar no gcc!?

Link para o comentário
Compartilhar em outros sites

  • 0

Dessa parte de OS, eu num sei quase nada, mas acredito que cada placa tenha, assim como os HDs, um número serial, ou um ID, como você disse. O que o windows pode ter é um banco de dados bem grande que liga a ID com o fabricante. Se ele não achar nenhum vinculo, pede pra você indicar o driver, e o driver sabe qual ID é o correto.

Vou procurar ler mais sobre isso.

Qualquer coisa, posto aqui.

[]'s

iSoron.

Link para o comentário
Compartilhar em outros sites

  • 0

De acordo com esse artigo, as placas de video possuem a sua descrição gravadas em suas Flash Bios. Pelo menos as modernas. Eis o artigo:

http://pubs.logicalexpressions.com/Pub0009...icle.asp?ID=161

Não consegui ver o nome da minha placa com isso, mas já é alguma coisa. laugh.gif

ps.: Não consegui ver no meu laptop. No pc normal, foi beleza.

Té mais,

iSoron.

Link para o comentário
Compartilhar em outros sites

  • 0

Está explicado a diferença de tamanho entre o windows xp e o 98 =P.. axo que deve ser assim, o próprio driver deve ter um banco de dados embutido dizendo a qual ID de placa é compativel, o windows deve apenas pegar o ID e colocar numa variavel, se não, ficaria com um tamanho gigantesco o OS, não!? =P

tipo, um BD em cada driver.. ahh seilá..

até mais =)

Link para o comentário
Compartilhar em outros sites

  • 0

O gerenciador do Windows só exibe o que o driver manda, nem checa se é o verdadeiro driver. Por isso, muitas vezes, nos deparamos com aquele "VGA Card" e 640×480, 16 cores. Quando está instalando o driver, ele deve checar a String da Bios da placa e ver se é compativel.

[]'s

iSoron.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      652k
×
×
  • Criar Novo...