Windows API: like they do on the movies

Ás vezes uma pessoa tem que fazer coisas estúpidas. A mim, pobre e humilde aspirante a engenheiro informático, calhou-me trabalhar directamente com a AIP do Windows (win32 api), em c claro, nada de dotnets nem mfcs nem trafulhices afins. Com tal aventura aprendi muito sobre este sistema que todos amamos e não queremos admitir, se não fosse o windblows que “case study” é que teríamos para demonstrar as vantagens do linux/unix/*ix? É um facto, linux é melhor, linux é mais estável, mas esta espécie de clone de si mesmo (não falando no asta-la-vista) é a bem ou a mal uma besta interessante. Tem bugs, não é seguro, e tem uma api de meter medo ao susto, mas dá pica. Nem que seja pela quantidade de nomes idiotas que se dá a um char *. E a comunicação entre processos via WindowMessages, que foi por acaso o que tive de fazer, é no mínimo original e não tão mal esgalhada quanto isso, pelo menos na teoria claro. Tudo bem que para comunicação eficiente são precisos alguns truques mas…. Sem truques temos as sockets ou pipes e nesta coisa não convem arriscar. E partilhar memória também é feio claro, mas funciona. Uns conselhos que tive de dar a mim mesmo ao programar com tal besta:

  • Ter a documentação do Windows SDK sempre aberta e usá-la a cada linha de código (link da vikipedia claro, não exageremos)
  • Ler bem os primeiros capítulos do clássico Programming Windows mesmo que me esteja a lixar para a interface gráfica
  • Não usar de forma alguma visual studio nem visual o outro, c e linha de comandos e essas coisas só implicam
  • Ter em conta que 90% dos parâmetros passados à maioria das funções vão a 0 ou NULL (e não vai tudo a 0 porque o compilador é parvo)
  • Ter a nução que o cl.exe não é nem nunca vai ser se quer comparável ao gcc.
  • Não partir nada só porque um dll com duas funções ocupa 48kb.
    • E pronto, uma pessoa tem destas coisas… E sim, tenho saudades do fork read write open close e execve….

      Anúncios

      ~ por Rui Batista em 13 de Janeiro de 2008.

      Deixe uma Resposta

      Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

      Logótipo da WordPress.com

      Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

      Imagem do Twitter

      Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

      Facebook photo

      Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

      Google+ photo

      Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

      Connecting to %s

       
      %d bloggers like this: