Use native windows function to read file : Native Windows Function : Windows C# Examples


C# Examples » Windows » Native Windows Function »

 

Use native windows function to read file









    
//  Code  from  
//  A  Programmer's  Introduction  to  C#  2.0,  Third  Edition
//  copyright  2000  Eric  Gunnerson


using  System;
using  System.Runtime.InteropServices;
using  System.Text;

class  FileRead
{
        const  uint  GENERIC_READ  =  0x80000000;
        const  uint  OPEN_EXISTING  =  3;
        IntPtr  handle;
        
        public  FileRead(string  filename)
        {
                //  opens  the  existing  file
                handle  =  CreateFile(        filename,
                GENERIC_READ,
                0,  
                0,
                OPEN_EXISTING,
                0,
                0);
        }
        
        [DllImport("kernel32",  SetLastError=true)]
        static  extern  IntPtr  CreateFile(
        string  filename,
        uint  desiredAccess,
        uint  shareMode,
        uint  attributes,                //  really  SecurityAttributes  pointer
        uint  creationDisposition,
        uint  flagsAndAttributes,
        uint  templateFile);
        
        [DllImport("kernel32",  SetLastError=true)]
        static  extern  unsafe  bool  ReadFile(
        IntPtr  hFile,
        void*  lpBuffer,  
        int  nBytesToRead,
        int*  nBytesRead,
        int  overlapped);
        
        public  unsafe  int  Read(byte[]  buffer,  int  count)
        {
                int  n  =  0;
                fixed  (byte*  p  =  buffer)  
                {
                        ReadFile(handle,  p,  count,  &n,  0);
                }
                return  n;
        }
}
class  Test
{
        public  static  void  Main(string[]  args)
        {
                FileRead  fr  =  new  FileRead("test.cs");
                
                byte[]  buffer  =  new  byte[128];
                ASCIIEncoding  e  =  new  ASCIIEncoding();
                
                //  loop  through,  read  until  done
                Console.WriteLine("Contents");
                while  (fr.Read(buffer,  128)  !=  0)
                {
                        Console.Write("{0}",  e.GetString(buffer));
                }
        }
}
    
   
  
   



Output

Contents


HTML code for linking to this page:

Follow Navioo On Twitter

C# Examples

 Navioo Windows
» Native Windows Function