Windows CE: Outputting Copyrts.txt to the Debug Port
 Someone asked on the newsgroups recently about reading copyrts.txt from an application. This is really a simple task to do, but I decided to output the file to the debug port, which turned out to be way more interesting.
The code below works to read the file into a buffer that is allocated to be the size of the file, so it reads the entire file in one call to ReadFile(). Of course to keep this simple, I left out any and all error handling – which is really dangerous in this code, so be sure to add it. It also successfully outputs the file using strtok() and RETAILMSG(). Notice that it uses a capital S, not lower case. The capital S is used to tell RETAILMSG() that the string is a char array instead of multi byte.
void ReadCopyrights()
{
      HANDLE hFile;
      DWORD FileSize;
      char *FileData;
      DWORD NumBytesRead;
 
      hFile = CreateFile (TEXT("\\Windows\\Copyrts.txt"),        
            GENERIC_READ,          
            FILE_SHARE_READ,                   
            NULL,                                    
            OPEN_EXISTING,                           
            0,                                             
            NULL);
      FileSize = GetFileSize (hFile, NULL) ;
      FileData = (char *)malloc( FileSize );
      ReadFile(hFile,
             FileData,
             FileSize,
             &NumBytesRead,
             NULL);
 
      char *pStr = FileData;
      strtok(pStr, "\n\0");
      while( pStr != NULL )
      {
            RETAILMSG(1, (TEXT("%S\n"), pStr ));
            pStr = strtok(NULL, "\n\0");
      }
      free( FileData );
 
}
 
 
 
My first attempt simply called RETAILMSG( 1, (TEXT(“%S”), FileData )); but I found that it didn’t output the entire file contents. Honestly, I don’t know why, maybe some restriction on the string length that it works with. My next attempt output one character at a time, but that seemed slow and messy.
 
Copyright © 2009 – Bruce Eitman
All Rights Reserved