Pergunta

Estou escrevendo um aplicativo para me comunicar com dispositivos USB usando winusb.dll. Esta é uma biblioteca de modo de usuário que permite a comunicação com um dispositivo através do Winusb.sys instalado como driver no kernel.

Estou escrevendo este aplicativo em C ++ com o Visual Studio 2008.

O cabeçalho winusb.h é encontrado no Windows DDK, então adiciono o caminho de incluir "d: winddk 7100.0.0 inc ddk". Em seguida, recebo um erro de que o USB.H não pode ser encontrado, que winerb.h inclui, USB.H também está no DDK, mas em um diretório diferente, então adiciono "d: winddk 7100.0.0 inc api" como um incluído dir.

Depois de adicionar esse caminho, tudo vai no banheiro e começo a obter erros de compilação no stdio.h e um monte de outros lugares estranhos.

Eu realmente não quero usar o sistema de construção DDK e o compilador para simplesmente usar essa DLL, essa é uma das principais razões pelas quais estou usando o Winusb em vez de escrever um driver adequado.

Alguém construiu um aplicativo usando o Winusb.dll e o Visual Studio?

Foi útil?

Solução

Estou trabalhando para escrever uma biblioteca USB cruzada e usar o ambiente de construção do DDK tornaria meu processo de construção muito mais complicado.

A Winusb deve ser usada por aplicativos de clientes para dispositivos que carregam Winusb.sys como seu motorista. No entanto, não parece haver uma versão dos cabeçalhos Winusb embalados para uso em programas de modo de usuário (não incluindo drivers UMDF).

O que acabei fazendo foi copiar os poucos cabeçalhos que apóiam o Winusb.h do DDK e em um diretório privado, então faço referência a esse diretório como um diretório incluído durante a construção.

Estes são os cabeçalhos que eu precisava copiar:

POPPACK.h
PSHPACK1.h
usb.h
usb100.h
usb200.h
winusb.h
winusbio.h

Depois de incluí -las em um diretório privado e vinculado ao winusb.lib no DDK, pude compilar e executar meu projeto no Visual Studio.

Não sei se eu recomendaria esse método, pois poderia ser ruim quando os cabeçalhos mudarem entre os lançamentos do DDK, mas abrirei um bug de conexão para ver se consigo obter o MS para criar um pacote de cabeçalhos winesb para uso no cliente Aplicativos no modo de usuário.

Outras dicas

Historicamente, o DDK e o SDK não jogaram bem juntos, mas esse problema foi corrigido algum tempo antes do lançamento do Vista. No entanto, parece que você pode estar misturando partes de um SDK com outro, o que não é bom. Eu usaria o ambiente de construção do DDK ou pelo menos daria uma olhada no Incluir Path, o ambiente DDK configura e replicar exatamente nas configurações do projeto VS.

Observe que você pode usar o ambiente de construção do DDK e ainda usar o VS IDE criando um 'projeto Makefile' ou poderá usar algo como as ferramentas DDKBuild da OSR ou da Hollistech:

Eu não os usei, então não tenho certeza de como eles funcionam bem, mas observe que, apesar de seus nomes e usos semelhantes, são ferramentas diferentes.

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