Driver Série PDA ( erreur NMAKE NMAKE U1073)

Driver Série PDA ( erreur NMAKE NMAKE U1073) - Divers - Programmation

Marsh Posté le 21-03-2007 à 13:11:10    

Bonjour,
Voilà j'ai développé un driver série pour un pda à l'aide de platform Builder (le code est mis plus bas). Le problème est que lors du "build" j'ai des erreurs. Quelqu'un peut-îl m'aider?? merci d'avance et meilleures salutations
 
Steve
 
Voici le log et le code plus bas :
 
LOG :
--------------------Configuration: Emulator: x86_Release--------------------
Starting Build: set WINCEREL=1&&build
==============
BUILD: [Thrd:Sequence:Type  ] Message
BUILD: [00:0000000000:PROGC ] Checking for \WINCE500\sdk\bin\i386\srccheck.exe.
BUILD: [00:0000000001:PROGC ] SrcCheck exit code: 0 (dec).
BUILD: [00:0000000002:PROGC ] Compile and Link for x86.
BUILD: [00:0000000003:PROGC ] Loading C:\WINCE500\PBWorkspaces\monpremierOS\my_serial_driver\Build.dat.
BUILD: [00:0000000004:PROGC ] Done.
BUILD: [00:0000000005:PROGC ] Computing include file dependencies:
BUILD: [00:0000000006:PROGC ] Checking for SDK include directory: C:\WINCE500\sdk\ce\inc.
BUILD: [00:0000000007:PROGC ] Scan \WINCE500\PBWorkspaces\monpremierOS\my_serial_driver\
BUILD: [00:0000000010:PROGC ] Linking \WINCE500\PBWorkspaces\monpremierOS\my_serial_driver\ directory.
BUILD: [01:0000000017:ERRORE] NMAKE :  U1073: don't know how to make 'C:\WINCE500\PBWorkspaces\monpremierOS\WINCE500\Emulator_x86\cesysgen\sdk\lib\x86\retail\coredll.lib;'
BUILD: [01:0000000019:ERRORE] NMAKE.EXE   -i -c BUILDMSG=Stop.  LINKONLY=1 NOPASS0=1 MAKEDLL=1 failed - rc = 2

BUILD: [00:0000000020:PROGC ]                      Files      Warnings      Errors
BUILD: [00:0000000021:PROGC ] Midl                     0             0           0
BUILD: [00:0000000022:PROGC ] Resource                 0             0           0
BUILD: [00:0000000023:PROGC ] Message                  0             0           0
BUILD: [00:0000000024:PROGC ] Precomp Header           0             0           0
BUILD: [00:0000000025:PROGC ] C/Cpp/Cxx                0             0           0
BUILD: [00:0000000026:PROGC ] Assembler                0             0           0
BUILD: [00:0000000027:PROGC ] Static Libraries         0             0           0
BUILD: [00:0000000028:PROGC ] Dll's                    0             0           0
BUILD: [00:0000000029:PROGC ] Exe's                    0             0           0
BUILD: [00:0000000030:PROGC ] Resx                     0             0           0
BUILD: [00:0000000031:PROGC ] Csharp Targets           0             0           0
BUILD: [00:0000000032:PROGC ] Other                    0             0           2
BUILD: [00:0000000033:PROGC ]  
BUILD: [00:0000000034:PROGC ] Total                    0             0           2
BUILD: [00:0000000035:PROGC ]  
BUILD: [00:0000000036:PROGC ] 0 Warnings,  2 Errors
Build for Windows CE (Release) (Built on Apr 22 2004 10:38:01)
File names: Build.log Build.wrn Build.err Build.dat
 
monpremierOS - 2 error(s), 0 warning(s)
 
 
 
 
Et voici le code :  
 
 
#include "stdafx.h"
#include <windows.h>
#include <wdm.h>
 
 
 
// constante de récupération du code du IOCTL 'PUTC'
#define IOCTL_PUTC CTL_CODE(FILE_DEVICE_UNKNOWN,2048, METHOD_BUFFERED, FILE_ANY_ACCESS)
// constante de récupération du code du IOCTL 'GETC'
#define IOCTL_GETC CTL_CODE(FILE_DEVICE_UNKNOWN,2049, METHOD_BUFFERED, FILE_ANY_ACCESS)
// constante de récupération du code du IOCTL 'GET_RX_STATUS'
#define IOCTL_GET_RX_STATUS CTL_CODE(FILE_DEVICE_UNKNOWN,2050,METHOD_BUFFERED, FILE_ANY_ACCESS)
 
 
// constantes servant à initialiser les statuts du driver
#define comLineControl 3
#define comDivisorLow 0
#define comDivisorHigh 1
#define comFIFOControl 2
#define comIntEnable 1
#define comModemControl 4
#define comLineStatus 5
#define comTxBuffer  0
#define comRxBuffer  0
 
// constantes d'erreur
#define LS_TSR_EMPTY  0x40
#define LS_THR_EMPTY  0x20
#define LS_RX_BREAK   0x10
#define LS_RX_FRAMING_ERR 0x08
#define LS_RX_PARITY_ERR 0x04
#define LS_RX_OVERRRUN  0x02
#define LS_RX_DATA_READY 0x01
#define LS_RX_ERRORS  (LS_RX_FRAMING_ERR | LS_RX_PARITY_ERR | LS_RX_OVERRRUN)
 
 
 
 
 
 
// entrée de la dll
BOOL APIENTRY DllMain(HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    return TRUE;
}
 
 
 
// fonction d'initialisation du driver
DWORD MSD_Init(DWORD dwContext)
{
 // adresse du port série
 PUCHAR IoPortBase;  
 
 
 // valeur de retour
 DWORD dwRet;
 
 switch((int)dwContext)
 {
 case 1:
  IoPortBase = ((PUCHAR)0x03F8);
  dwRet = 1;
  RETAILMSG(1,(TEXT("SERIAL: MSD_Init MSD1\n" )));
  break;
 case 2:
  IoPortBase = ((PUCHAR)0x02F8);
  dwRet = 2;
  RETAILMSG(1,(TEXT("SERIAL: MSD_Init MSD2\n" )));
  break;
 default:
  IoPortBase = ((PUCHAR)0x03F8);
  dwRet = 1;
  RETAILMSG(1,(TEXT("SERIAL: MSD_Init MSD1 (default)\n" )));
  break;
 }
 
 
 // initialisation du statut du driver
 WRITE_PORT_UCHAR(IoPortBase+comLineControl, 0x80);
 WRITE_PORT_UCHAR(IoPortBase+comDivisorLow,0x0C);
 WRITE_PORT_UCHAR(IoPortBase+comDivisorHigh, 0x00);
 WRITE_PORT_UCHAR(IoPortBase+comFIFOControl, 0x00);
 WRITE_PORT_UCHAR(IoPortBase+comLineControl, 0x03);
 WRITE_PORT_UCHAR(IoPortBase+comIntEnable, 0x00);
 WRITE_PORT_UCHAR(IoPortBase+comModemControl,0x03);
 
 return dwRet;
}
 
 
// fonction de désinitialisation du driver
BOOL MSD_Deinit(DWORD hDeviceContext)
{
 // affichage d'un message de deboggage montrant que l'on est entré dans la fonction de desinitialisation
    RETAILMSG(1,(TEXT("SERIAL: MSD_Deinit\n" )));
 
    return TRUE;
}  
 
 
// fonction d'ouverture de flux vers le driver
DWORD MSD_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode)
{
 // adresse du port série
 PUCHAR IoPortBase;  
 
 // valeur de retour
    DWORD dwRet;
 
 switch((int)hDeviceContext)
 {
 case 1:
  IoPortBase = ((PUCHAR)0x03F8);
  dwRet = 100;
  RETAILMSG(1,(TEXT("SERIAL: MSD_Open MSD1\n" )));
  break;
 case 2:
  IoPortBase = ((PUCHAR)0x02F8);
  dwRet = 200;
  RETAILMSG(1,(TEXT("SERIAL: MSD_Open MSD2\n" )));
  break;
 default:
  IoPortBase = ((PUCHAR)0x03F8);
  dwRet = 100;
  RETAILMSG(1,(TEXT("SERIAL: MSD_Open MSD1 (default)\n" )));
  break;
 }
 
 
 // vidage du buffer de reception si necessaire
 while ((READ_PORT_UCHAR(IoPortBase + comLineStatus)  & LS_RX_DATA_READY) == 1)
 {
  // tant qu'il y a un caractère, on le lit
  READ_PORT_UCHAR(IoPortBase + comRxBuffer);
 }
 
    return dwRet;
}  
 
 
// fonction de fermeture du flux ouvert vers le driver
BOOL MSD_Close(DWORD hOpenContext)
{
 // affichage d'un message de deboggage montrant que l'on est entré dans la fonction de fermeture du driver
 RETAILMSG(1,(TEXT("SERIAL: MSD_Close\n" )));
 
 return TRUE;
}  
 
 
 
// fonction d'appel aux contrôles fournis par le driver
BOOL MSD_IOControl(DWORD hOpenContext,  
                   DWORD dwCode,  
                   PBYTE pBufIn,  
                   DWORD dwLenIn,  
                   PBYTE pBufOut,  
                   DWORD dwLenOut,  
                   PDWORD pdwActualOut)
{
 // adresse du port série
 PUCHAR IoPortBase;  
 
 switch((int)hOpenContext)
 {
 case 100:
  IoPortBase = ((PUCHAR)0x03F8);
  break;
 case 200:
  IoPortBase = ((PUCHAR)0x02F8);
  break;
 default:
  IoPortBase = ((PUCHAR)0x03F8);
  break;
 }
 
   // en fonction de ce que l'on demande au driver
   switch(dwCode)
 {
 // si l'on veut écrire un caractère
 case IOCTL_PUTC:
  // on attend tant qu'il n'y a rien à lire  
  while(!(READ_PORT_UCHAR(IoPortBase + comLineStatus)& LS_THR_EMPTY));
 
  // on ecrit à l'adresse pBufIn ce qui vient d'être lu
  WRITE_PORT_UCHAR(IoPortBase + comTxBuffer, *pBufIn);
 
  break;
 
 // si l'on veut lire un caractère
 case IOCTL_GETC:
  // ecriture du caractère à envoyer à l'adresse pBufOut
  *pBufOut = READ_PORT_UCHAR(IoPortBase + comRxBuffer);
  *pdwActualOut = 1;  
  break;
 
 // si l'on veut lire le statut du driver
 case IOCTL_GET_RX_STATUS:
  // écriture du statut du driver à l'adresse pBufOut
  *pBufOut=(READ_PORT_UCHAR(IoPortBase + comLineStatus) & LS_RX_DATA_READY);
  *pdwActualOut = 1;  
  break;
 } //fin du switch
 
 return TRUE;
}
 
 
// fonction de traitement d'extinction
void MSD_PowerDown(DWORD hDeviceContext)
{
 
 // affichage d'un message de deboggage montrant que l'on est entré dans la fonction d'extinction
   RETAILMSG(1,(TEXT("SERIAL: MSD_PowerDown\n" )));
}  
 
// fonction de traitement de demarrage
void MSD_PowerUp(DWORD hDeviceContext)
{
 // affichage d'un message de deboggage montrant que l'on est entré dans la fonction de demarrage
    RETAILMSG(1,(TEXT("SERIAL: MSD_PowerUp\n" )));
}  
 
// fonction de traitement de lecture de message
DWORD MSD_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count)
{
 // valeur de retour
    DWORD dwRet = 0;
 // affichage d'un message de deboggage montrant que l'on est entré dans la fonction de lecture
    RETAILMSG(1,(TEXT("SERIAL: MSD_Read\n" )));
    return dwRet;
}  
 
// fonction de traitement d'écriture de message
DWORD MSD_Write(DWORD hOpenContext, LPCVOID pSourceBytes, DWORD NumberOfBytes)
{
 // valeur de retour
    DWORD dwRet = 0;
 // affichage d'un message de deboggage montrant que l'on est entré dans la fonction d'écriture
    RETAILMSG(1,(TEXT("SERIAL: MSD_Write\n" )));
    return dwRet;
}
 
 
// fonction de position
DWORD MSD_Seek(DWORD hOpenContext, long Amount, DWORD Type)
{
 // valeur de retour
    DWORD dwRet = 0;
 // affichage d'un message de deboggage montrant que l'on est entré dans la fonction de recherche
    RETAILMSG(1,(TEXT("SERIAL: MSD_Seek\n" )));
    return dwRet;
}  
 

Reply

Marsh Posté le 21-03-2007 à 13:11:10   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed