Pergunta

Eu estou trabalhando em um projeto em C # para criar um aplicativo de formulários. Eu gostaria de usar IFileDialog e outras funcionalidades que faz parte da API nativa do Windows (ou no entanto ti deve ser chamado).

Começando eu não sabia absolutamente nada sobre interoperabilidade ou a API do Windows. Estou começando a aprender, mas às vezes pode ser difícil de encontrar informações muito básicas sobre certos aspectos. Portanto, tenho uma série de perguntas (provavelmente triviais / estúpidas):

HRESULTS são usados ??frequentemente. Pelo que entendi, HRESULTS são nada mais do que uma entidade de 32 bits onde os diferentes pedaços fornecer informações sobre o resultado de certas operações. Em algum código que eu encontrei on-line muitas vezes eu vejo coisas como int hres = -2147467259;. Sendo um total de noob fui verificar o que isso significa. -2147467259 é 0xFFFFFFFF80004005 e na documentação on-line em MSDN eu posso ver que significa 0x80004005 E_FAIL erro aka não especificado. A minha pergunta é, o que é com a parte FFFFFFFF? Não foi possível apenas têm int hres = 0x80004005 usado? Talvez isso é muito óbvio e eu sou um noob total, mas ainda:)

Foi útil?

Solução

A parte FFFFFFFF é porque seu HResult é negativo.

Isso é como computadores armazenam números negativos usando complemento de dois .

Confira este cálculo (grifo meu):
-2147467259 = 0xFFFFFFFF 80004005
-2147467259 + 2 ^ 32 (capotamento) = 2147500037 = 0x 80004005

Outras dicas

em 32 plataformas bit um int é de 32 bits de comprimento, que é de 4 bytes de 8 dígitos hexadecimais. Então E_FAIL seria 0x80004005, (que é o que o código colado shows. Se você despejar esse valor em uma máquina de 64 bits, em seguida, ele vai levar até o dobro de armazenamento e uma vez que os números são sinal estendido ea principal 8 (100 binário) meios o bit de sinal é 1 então é mais todo o caminho. 1111 em binário é F em hexadecimal que traz todas as Fs que você vê.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top