begin process at 2012 02 10 20:50:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Système

 > 

Noyau

 > 

KMDF : Problème de compilation


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

KMDF : Problème de compilation

mercredi 27 février 2008 à 17:56:52 | KMDF : Problème de compilation

lesdis

Bonjour,

A l'aide du WinDDK, j'essai de programmer un driver générique et surtout de comprendre comment tout cela fonctionne.

Malheureusement et ce qui était prévisible, le compilateur me ressort des erreurs.


[Code]
#include <ntddk.h>
#include <wdf.h>

NTSTATUS
  MyDriverDeviceAdd (
    IN WDFDRIVER Driver,
    IN PWDFDEVICE_INIT DeviceInit
    );
 
VOID
  MyDriverUnload (
    IN WDFDRIVER  Driver
    );

NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
  
    NTSTATUS status;
    WDF_DRIVER_CONFIG  config;


    DbgPrint("Lancement du driver\n");

    WDF_DRIVER_CONFIG_INIT(&config,MyDriverDeviceAdd);

    config.EvtDriverUnload = MyDriverUnload;

// Erreur de compilation sur cette fonction
    status = WdfDriverCreate(
    DriverObject,
    RegistryPath,
    WDF_NO_OBJECT_ATTRIBUTES,
    &config,
    WDF_NO_HANDLE
    );

    return STATUS_SUCCESS;
}

NTSTATUS MyDriverDeviceAdd(Driver,DeviceInit){
DbgPrint("Nouveau device conecté");
return STATUS_SUCCESS;
}

VOID MyDriverUnload(Driver){
DbgPrint("unload driver");
}

[/Code]


Lorsque je commente la fonction WdfDriverCreate, cela compile très bien.
Lorsque je "décommente", le compilateur me sort une erreur de lien :

error LNK2001: unresolved external symbol _WdfFunctions
error LNK2001: unresolved external symbol _WdfDriverGlobals



J'ai beau regarder les exemples présent dans le winddk et chercher sur le  net, je ne trouve aucune référence à cette erreur.
J'en appel donc à la communauté pour trouver une piste et régler ce petit soucis

Merci d'avance,

Bonne Prog
mercredi 27 février 2008 à 18:33:54 | Re : KMDF : Problème de compilation

jfrancois

Bonjour,

Ce n'est pas le compilateur qui sort des erreurs mais l'éditeur de liens (error LNK = error LiNK editor) c'est à dire le programme qui réunit "tous les bouts de codes" pour créer l'exécutable final.
 
En l'occurence ici l'éditeur de liens ne trouve pas le code des fonctions "_WdfFunctions" et "_WdfDriverGlobals" parce qu'il manque dans le projet la librairie qui les contient (du genre "wdf.lib" par exemple). Cette librairie "wdf.lib" (ou autre !!!) peut être ajoutée dans le projet ou dans le code avec un #pragma comment(lib,"wdf.lib") après le #include <wdf.h>.

Jean-François

mercredi 27 février 2008 à 18:36:52 | Re : KMDF : Problème de compilation

jfrancois

Complément !!!

Ce n'est pas forcément du code que l'éditeur de liens ne trouve pas ! Ca peut être aussi des données !

Jean-François

mardi 9 septembre 2008 à 17:59:00 | Re : KMDF : Problème de compilation

valblade

Bonjour,

J'ai un peu le même souci, j'utilise le WDK, et j'aimerais compiler un petit driver.

Néanmoins, j'ai un undefined reference sur ZwQuerySystemInformation... j'inclus pourtant wdm.h...

Quelqu'un aurait-il une idée?

Merci d'avance.
mardi 9 septembre 2008 à 18:14:09 | Re : KMDF : Problème de compilation

jfrancois

Bonjour,

... Néanmoins, j'ai un undefined reference sur ZwQuerySystemInformation... j'inclus pourtant wdm.h. ...

Celà n'a rien à voir ! Le fichier d'entête wdm.h contient classiquement des descriptions (fonctions, classes, constantes, ...); il est utilisé par le compilateur. Ce qui manque c'est le fichier utilisé par le linker et qui contient le code de la fonction ZwQuerySystemInformation ! c'est à dire le fichier d'extension lib.

Jean-François

mardi 9 septembre 2008 à 18:52:37 | Re : KMDF : Problème de compilation

valblade

si je comprends bien, tu veux que j'ajoute un #pragma comment(lib,"ntdll.lib")

J'ai testé cela ne marche pas.

Par contre, j'ai vu sur certain extraits de code qu'une déclaration du prototype de ZwQuerySystemInformation est faite avant...



NTSYSAPI
NTSTATUS
NTAPI ZwQuerySystemInformation(
                        IN ULONG SystemInformationClass,
                        IN PVOID SystemInformation,
                        IN ULONG SystemInformationLength,
                        OUT PULONG ReturnLength);

Là par contre, ca compile (pas encore testé si cela marche), mais ca sens le hack pour eviter de faire crier le linker..
Sinon, je commence à peine le dev de driver, à quoi correspondent les macro IN et OUT?

Merci



mardi 9 septembre 2008 à 19:12:31 | Re : KMDF : Problème de compilation

jfrancois

1) Si le prototype est ajouté avant forcément ça compile sans problème mais ça n'a toujours aucun rapport avec le linker qui se contrefiche totalement du code source ! La seule chose qui l'intéresse c'est qu'on lui fournisse le fichier lib qui contient le code de la fonction !!!

2) En cherchant ZwQuerySystemInformation() sur Google, je suis tombé sur MSDN qui annonce que cette fonction n'est plus suivie (ZwQuerySystemInformation may be altered or unavailable in subsequent versions of Windows. Applications should use the alternate functions listed in this topic). C'est peut-être pour ça qu'elle n'est pas trouvée dans ntdll.lib. Il est dit aussi qu'il faut l'utiliser en la chargeant explicitement (This function has no associated import library. You must use the LoadLibrary and GetProcAddress functions to dynamically link to Ntdll.dll) : il n'y a donc pas de fichier lib contenant le chargement implicite.

3) IN et OUT sont des macros qui ne génèrent rien. Elles sont là à titre indicatif pour signaler si le paramètre qui suit est en entrée (IN) ou en sortie (OUT) ... ou optionel (OPTIONAL).

Jean-François

mardi 9 septembre 2008 à 19:17:36 | Re : KMDF : Problème de compilation

jfrancois

Complément ! Le fichier lib contient le code de la fonction si c'est une bibliothèque statique ou le code de chargement implicite de la fonction si elle est disponible en DLL.

Jean-François

mardi 9 septembre 2008 à 19:38:16 | Re : KMDF : Problème de compilation

valblade

Merci pour ton aide, mais le simple ajout du prototype a suffit à faire fonctionner mon driver.

Merci encore pour ton aide.


Cette discussion est classée dans : config, driver, status, ntstatus, wdf


Répondre à ce message

Sujets en rapport avec ce message

URGENT : Infos sur " Device Driver Kits (DDK et SDK) "??????? [ par irokoy ] Je cherche a developper un driver de port serie virtuel.D'apres les infos que j'ai trouve, il faut creer un fichier ".vxd" qui va gerer le flux de don Comment ça marche un driver ? [ par Xaviou ] Salut.Je suis à la recherche d'un code permettant de créer un driver pour une imprimante "virtuelle".Je cherche an fait à créer une telle imprimante p pb initialisation/modification de variables ds une boite de dialogue [ par neub ] Salut,j'ai un leger ennui qui devrait etre certainement simple à resoudre (je suis debutant en vc++):je developpe un module de trajectographie. Ds mon Status Process d une application windows [ par Trinita16 ] est il possible de savoir le status d une application qui tourne en tache de fond sous windows ? je m explique, je voudrais savoir si mon application config.msi [ par coockiesch ] Hello! J'ai créé un exe et créé avec visual studio un installateur. Je peux installer mon prog sans problême mais lorsque je veux le désinstaller j'ob driver sous windows [ par punch95 ] j'ai besoin d'un exemple de driver sous windows car je veux faire un driver pour une liaison i2c merci de me l'envoyer .oliviervernet95@hotmail.com un exemple de driver de webcam [ par ludou ] ben voilà je voulais juste savoir si quelqu'un pouvait me donner un exemple de code tout simple de driver de webcam ou un site qui en propose.bien à v win2000 & ansi.sys [ par anotherfrog ] salut,eske qlq'un sait comment charger le fichier ANSI.SYS sous WINDOWS 2000 PRO ?J'ai un prog fait en c sous win98 qui utilise les séquences d'échapp Quelle fonction permet de rechercher automatiquement et d'indiquer le chemin complet d'un fichier? [ par Benwillis ] Par exemple, j'ai besoin d'indiquer ou se trouve un fichier ini pour lire dedans mais j'aimerai qu'il le trouve à chaque fois ss lui dire où il se tro MciSendString Status [ par Xentor609 ] Salut,J'utilise la commande :char status[5];mciSendString("status cdaudio mode",(LPSTR)status,sizeof(status),NULL);pour connaitre l'etat du lecteur cd


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales