ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

lfile.c
Go to the documentation of this file.
00001 /* $Id: lfile.c 48475 2010-08-07 05:02:58Z sir_richard $
00002  *
00003  * COPYRIGHT:       See COPYING in the top level directory
00004  * PROJECT:         ReactOS system libraries
00005  * FILE:            lib/kernel32/file/lfile.c
00006  * PURPOSE:         Find functions
00007  * PROGRAMMER:      Ariadne ( ariadne@xs4all.nl)
00008  * UPDATE HISTORY:
00009  *                  Created 01/11/98
00010  */
00011 
00012 #include <k32.h>
00013 #define NDEBUG
00014 #include <debug.h>
00015 
00016 /*
00017  * @implemented
00018  */
00019 long
00020 WINAPI
00021 _hread(HFILE hFile, LPVOID lpBuffer, long lBytes)
00022 {
00023     DWORD NumberOfBytesRead;
00024 
00025     if (!ReadFile(LongToHandle(hFile),
00026                   lpBuffer,
00027                   (DWORD) lBytes,
00028                   &NumberOfBytesRead,
00029                   NULL))
00030     {
00031         return HFILE_ERROR;
00032     }
00033     return NumberOfBytesRead;
00034 }
00035 
00036 
00037 /*
00038  * @implemented
00039  */
00040 long
00041 WINAPI
00042 _hwrite(HFILE hFile, LPCSTR lpBuffer, long lBytes)
00043 {
00044     DWORD NumberOfBytesWritten;
00045 
00046     if (lBytes == 0)
00047     {
00048         if (!SetEndOfFile((HANDLE) hFile))
00049         {
00050             return HFILE_ERROR;
00051         }
00052         return 0;
00053     }
00054     if (!WriteFile(LongToHandle(hFile),
00055                    (LPVOID) lpBuffer,
00056                    (DWORD) lBytes,
00057                    &NumberOfBytesWritten,
00058                    NULL))
00059     {
00060         return HFILE_ERROR;
00061     }
00062     return NumberOfBytesWritten;
00063 }
00064 
00065 
00066 /*
00067  * @implemented
00068  */
00069 HFILE
00070 WINAPI
00071 _lopen(LPCSTR lpPathName, int iReadWrite)
00072 {
00073     DWORD dwAccess, dwSharing, dwCreation;
00074 
00075     if (iReadWrite & OF_CREATE)
00076     {
00077         dwCreation = CREATE_ALWAYS;
00078         dwAccess = GENERIC_READ | GENERIC_WRITE;
00079     }
00080     else
00081     {
00082         dwCreation = OPEN_EXISTING;
00083         switch(iReadWrite & 0x03)
00084         {
00085             case OF_READ:      dwAccess = GENERIC_READ; break;
00086             case OF_WRITE:     dwAccess = GENERIC_WRITE; break;
00087             case OF_READWRITE: dwAccess = GENERIC_READ | GENERIC_WRITE; break;
00088             default:           dwAccess = 0; break;
00089         }
00090     }
00091 
00092     switch(iReadWrite & 0x70)
00093     {
00094         case OF_SHARE_EXCLUSIVE:  dwSharing = 0; break;
00095         case OF_SHARE_DENY_WRITE: dwSharing = FILE_SHARE_READ; break;
00096         case OF_SHARE_DENY_READ:  dwSharing = FILE_SHARE_WRITE; break;
00097         case OF_SHARE_DENY_NONE:
00098         case OF_SHARE_COMPAT:
00099         default:                  dwSharing = FILE_SHARE_READ | FILE_SHARE_WRITE; break;
00100     }
00101 
00102     return (HFILE) CreateFileA(lpPathName,
00103                                dwAccess,
00104                                dwSharing,
00105                                NULL,
00106                                dwCreation,
00107                                FILE_ATTRIBUTE_NORMAL,
00108                                NULL);
00109 }
00110 
00111 
00112 /*
00113  * @implemented
00114  */
00115 HFILE
00116 WINAPI
00117 _lcreat(LPCSTR lpPathName, int iAttribute)
00118 {
00119     HANDLE hFile;
00120 
00121     iAttribute &= FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM;
00122     hFile = CreateFileA(lpPathName,
00123                         GENERIC_READ | GENERIC_WRITE,
00124                         (FILE_SHARE_READ | FILE_SHARE_WRITE),
00125                         NULL,
00126                         CREATE_ALWAYS,
00127                         iAttribute,
00128                         NULL);
00129 
00130     return HandleToLong(hFile);
00131 }
00132 
00133 
00134 /*
00135  * @implemented
00136  */
00137 int
00138 WINAPI
00139 _lclose(HFILE hFile)
00140 {
00141     return CloseHandle(LongToHandle(hFile)) ? 0 : HFILE_ERROR;
00142 }
00143 
00144 
00145 /*
00146  * @implemented
00147  */
00148 LONG
00149 WINAPI
00150 _llseek(HFILE hFile, LONG lOffset, int iOrigin)
00151 {
00152     return SetFilePointer(LongToHandle(hFile),
00153                           lOffset,
00154                           NULL,
00155                           (DWORD) iOrigin);
00156 }
00157 
00158 /* EOF */

Generated on Fri May 25 2012 04:22:19 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.