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

protos.h
Go to the documentation of this file.
00001 /*************************************************************************
00002 *
00003 * File: protos.h
00004 *
00005 * Module: Ext2 File System Driver (Kernel mode execution only)
00006 *
00007 * Description:
00008 *   Contains the prototypes for functions in this sample FSD.
00009 *
00010 * Author: Manoj Paul Joseph
00011 *
00012 *
00013 *************************************************************************/
00014 
00015 #ifndef _EXT2_PROTOS_H_
00016 #define _EXT2_PROTOS_H_
00017 
00018 #ifdef __REACTOS__
00019 typedef PIO_STACK_LOCATION PEXTENDED_IO_STACK_LOCATION;
00020 #endif
00021 
00022 /*************************************************************************
00023 * Prototypes for the file sfsdinit.c
00024 *************************************************************************/
00025 extern NTSTATUS NTAPI DriverEntry(
00026     PDRIVER_OBJECT          DriverObject,       // created by the I/O sub-system
00027     PUNICODE_STRING         RegistryPath);      // path to the registry key
00028 
00029 extern void NTAPI Ext2FsdInitializeFunctionPointers(
00030     PDRIVER_OBJECT          DriverObject);      // created by the I/O sub-system
00031 
00032 
00033 extern VOID NTAPI Ext2QueueHandlerThread(
00034     IN PVOID                StartContext);
00035                                                 
00036 /*************************************************************************
00037 * Prototypes for the file fsctrl.c
00038 *************************************************************************/
00039 
00040 extern NTSTATUS NTAPI Ext2FileSystemControl(
00041     IN PDEVICE_OBJECT       DeviceObject,
00042     IN PIRP                 Irp
00043     );
00044 
00045 extern NTSTATUS NTAPI Ext2VerifyVolume (
00046     IN PIRP                 Irp,
00047     IN PIO_STACK_LOCATION   IrpSp );
00048 
00049 
00050 /*************************************************************************
00051 * Prototypes for the file create.c
00052 *************************************************************************/
00053 extern NTSTATUS NTAPI Ext2Create(
00054 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
00055 PIRP                        Irp);           // I/O Request Packet
00056 
00057 extern NTSTATUS NTAPI Ext2CommonCreate(
00058 PtrExt2IrpContext           PtrIrpContext,
00059 PIRP                        PtrIrp,
00060 BOOLEAN                     FirstAttempt );
00061 
00062 extern NTSTATUS NTAPI Ext2OpenVolume(
00063     PtrExt2VCB              PtrVCB,             // volume to be opened
00064     PtrExt2IrpContext       PtrIrpContext,      // IRP context
00065     PIRP                    PtrIrp,             // original/user IRP
00066     unsigned short          ShareAccess,        // share access
00067     PIO_SECURITY_CONTEXT    PtrSecurityContext, // caller's context (incl access)
00068     PFILE_OBJECT            PtrNewFileObject);  // I/O Mgr. created file object
00069 
00070 extern NTSTATUS NTAPI Ext2OpenRootDirectory(
00071     PtrExt2VCB              PtrVCB,                 // volume to be opened
00072     PtrExt2IrpContext       PtrIrpContext,          // IRP context
00073     PIRP                    PtrIrp,                 // original/user IRP
00074     unsigned short          ShareAccess,            // share access
00075     PIO_SECURITY_CONTEXT    PtrSecurityContext,     // caller's context (incl access)
00076     PFILE_OBJECT            PtrNewFileObject);      // I/O Mgr. created file object
00077 
00078 extern void NTAPI Ext2InitializeFCB(
00079     PtrExt2FCB              PtrNewFCB,      // FCB structure to be initialized
00080     PtrExt2VCB              PtrVCB,         // logical volume (VCB) pointer
00081     PtrExt2ObjectName       PtrObjectName,  // name of the object
00082     uint32                  Flags,          // is this a file/directory, etc.
00083     PFILE_OBJECT            PtrFileObject);// optional file object to be initialized
00084 
00085 extern PtrExt2FCB   NTAPI Ext2LocateChildFCBInCore(
00086     PtrExt2VCB              PtrVCB, 
00087     PUNICODE_STRING         PtrName, 
00088     ULONG                   ParentInodeNo );
00089 
00090 extern PtrExt2FCB   NTAPI Ext2LocateFCBInCore(
00091     PtrExt2VCB              PtrVCB, 
00092     ULONG                   InodeNo );
00093 
00094 
00095 extern ULONG    NTAPI Ext2LocateFileInDisk(
00096     PtrExt2VCB              PtrVCB,
00097     PUNICODE_STRING         PtrCurrentName, 
00098     PtrExt2FCB              PtrParentFCB, 
00099     ULONG                   *Type );
00100 
00101 extern ULONG NTAPI Ext2CreateFile(
00102     PtrExt2IrpContext       PtrIrpContext,
00103     PtrExt2VCB              PtrVCB,
00104     PUNICODE_STRING         PtrName, 
00105     PtrExt2FCB              PtrParentFCB,
00106     ULONG                   Type);
00107 
00108 extern BOOLEAN NTAPI Ext2OverwriteFile(
00109     PtrExt2FCB              PtrFCB,
00110     PtrExt2IrpContext       PtrIrpContext);
00111 
00112 extern BOOLEAN NTAPI Ext2SupersedeFile(
00113     PtrExt2FCB              PtrFCB,
00114     PtrExt2IrpContext       PtrIrpContext);
00115 
00116 /*************************************************************************
00117 * Prototypes for the file misc.c
00118 *************************************************************************/
00119 extern NTSTATUS NTAPI Ext2InitializeZones(
00120 void);
00121 
00122 extern void NTAPI Ext2DestroyZones(
00123 void);
00124 
00125 extern BOOLEAN NTAPI Ext2IsIrpTopLevel(
00126 PIRP                            Irp);                   // the IRP sent to our dispatch routine
00127 
00128 extern long NTAPI Ext2ExceptionFilter(
00129 PtrExt2IrpContext           PtrIrpContext,
00130 PEXCEPTION_POINTERS     PtrExceptionPointers);
00131 
00132 extern NTSTATUS NTAPI Ext2ExceptionHandler(
00133 PtrExt2IrpContext           PtrIrpContext,
00134 PIRP                            Irp);
00135 
00136 extern void NTAPI Ext2LogEvent(
00137 NTSTATUS                        Ext2EventLogId, // the Ext2 private message id
00138 NTSTATUS                        RC);                    // any NT error code we wish to log ...
00139 
00140 extern PtrExt2ObjectName NTAPI Ext2AllocateObjectName(
00141 void);
00142 
00143 extern void NTAPI Ext2ReleaseObjectName(
00144 PtrExt2ObjectName           PtrObjectName);
00145 
00146 extern PtrExt2CCB NTAPI Ext2AllocateCCB(
00147 void );
00148 
00149 extern PtrExt2FCB NTAPI Ext2GetUsedFCB( 
00150 PtrExt2VCB                  PtrVCB );
00151 
00152 extern BOOLEAN NTAPI Ext2CloseClosableFCB( 
00153 PtrExt2FCB                  PtrFCB );
00154 
00155 extern void NTAPI Ext2ReleaseCCB(
00156 PtrExt2CCB                  PtrCCB);
00157 
00158 extern PtrExt2FCB NTAPI Ext2AllocateFCB(
00159 void);
00160 
00161 extern NTSTATUS NTAPI Ext2CreateNewFCB(
00162 PtrExt2FCB                  *ReturnedFCB,
00163 LARGE_INTEGER               AllocationSize,
00164 LARGE_INTEGER               EndOfFile,
00165 PFILE_OBJECT                PtrFileObject,
00166 PtrExt2VCB                  PtrVCB,
00167 PtrExt2ObjectName           PtrObjectName);
00168 
00169 extern NTSTATUS NTAPI Ext2CreateNewCCB(
00170 PtrExt2CCB              *ReturnedCCB,
00171 PtrExt2FCB              PtrFCB,
00172 PFILE_OBJECT            PtrFileObject);
00173 
00174 extern void NTAPI Ext2ReleaseFCB(
00175 PtrExt2FCB                  PtrFCB);
00176 
00177 extern PtrExt2FileLockInfo NTAPI Ext2AllocateByteLocks(
00178 void);
00179 
00180 extern void NTAPI Ext2ReleaseByteLocks(
00181 PtrExt2FileLockInfo     PtrByteLocks);
00182 
00183 extern PtrExt2IrpContext NTAPI Ext2AllocateIrpContext(
00184 PIRP                            Irp,
00185 PDEVICE_OBJECT              PtrTargetDeviceObject);
00186 
00187 extern void NTAPI Ext2ReleaseIrpContext(
00188 PtrExt2IrpContext           PtrIrpContext);
00189 
00190 extern NTSTATUS NTAPI Ext2PostRequest(
00191 PtrExt2IrpContext           PtrIrpContext,
00192 PIRP                        PtrIrp);
00193 
00194 extern void NTAPI Ext2CommonDispatch(
00195 void                        *Context);  // actually an IRPContext structure
00196 
00197 extern void NTAPI Ext2InitializeVCB(
00198 PDEVICE_OBJECT              PtrVolumeDeviceObject,
00199 PDEVICE_OBJECT              PtrTargetDeviceObject,
00200 PVPB                        PtrVPB,
00201 PLARGE_INTEGER              AllocationSize);
00202 
00203 extern void NTAPI Ext2CompleteRequest(
00204     IN PIRP                 Irp OPTIONAL,
00205     IN NTSTATUS             Status
00206     );
00207 
00208 extern NTSTATUS NTAPI Ext2DenyAccess( 
00209     IN PIRP Irp 
00210     );
00211 extern NTSTATUS NTAPI Ext2GetFCB_CCB_VCB_FromFileObject(
00212     IN PFILE_OBJECT         PtrFileObject,
00213     OUT PtrExt2FCB              *PPtrFCB,
00214     OUT PtrExt2CCB              *PPtrCCB,
00215     OUT PtrExt2VCB              *PPtrVCB    );
00216 
00217 extern void NTAPI Ext2CopyUnicodeString( 
00218     IN OUT PUNICODE_STRING  PtrDestinationString, 
00219     IN PUNICODE_STRING PtrSourceString );
00220 
00221 extern void NTAPI Ext2CopyWideCharToUnicodeString( 
00222     IN OUT PUNICODE_STRING  PtrDestinationString, 
00223     IN PCWSTR PtrSourceString );
00224 
00225 extern void NTAPI Ext2CopyCharToUnicodeString( 
00226     IN OUT PUNICODE_STRING  PtrDestinationString, 
00227     IN PCSTR PtrSourceString,
00228     IN USHORT SourceStringLength );
00229 
00230 extern void NTAPI Ext2CopyZCharToUnicodeString( 
00231     IN OUT PUNICODE_STRING  PtrDestinationString, 
00232     IN PCSTR PtrSourceString );
00233 
00234 extern void NTAPI Ext2DeallocateUnicodeString( 
00235     PUNICODE_STRING     PtrUnicodeString );
00236 
00237 extern void NTAPI Ext2ZerooutUnicodeString(
00238     PUNICODE_STRING     PtrUnicodeString );
00239 
00240 extern BOOLEAN NTAPI Ext2SaveBCB(
00241     PtrExt2IrpContext   PtrIrpContext,
00242     PBCB                PtrBCB,
00243     PFILE_OBJECT        PtrFileObject);
00244 
00245 extern BOOLEAN NTAPI Ext2FlushSavedBCBs(
00246     PtrExt2IrpContext   PtrIrpContext);
00247 
00248 extern BOOLEAN NTAPI AssertBCB(
00249     PBCB                PtrBCB);
00250 
00251 extern ULONG NTAPI Ext2Align(
00252     ULONG               NumberToBeAligned, 
00253     ULONG               Alignment);
00254 
00255 extern LONGLONG NTAPI Ext2Align64(
00256     LONGLONG            NumberToBeAligned, 
00257     LONGLONG            Alignment);
00258 
00259 extern ULONG NTAPI Ext2GetCurrentTime(VOID);
00260 
00261 /*************************************************************************
00262 * Prototypes for the file cleanup.c
00263 *************************************************************************/
00264 extern NTSTATUS NTAPI Ext2Cleanup(
00265 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
00266 PIRP                            Irp);                   // I/O Request Packet
00267 
00268 extern NTSTATUS NTAPI Ext2CommonCleanup(
00269 PtrExt2IrpContext           PtrIrpContext,
00270 PIRP                        PtrIrp,
00271 BOOLEAN                     FirstAttempt );
00272 
00273 /*************************************************************************
00274 * Prototypes for the file close.c
00275 *************************************************************************/
00276 extern NTSTATUS NTAPI Ext2Close(
00277 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
00278 PIRP                            Irp);                   // I/O Request Packet
00279 
00280 extern NTSTATUS NTAPI Ext2CommonClose(
00281 PtrExt2IrpContext           PtrIrpContext,
00282 PIRP                        PtrIrp,
00283 BOOLEAN                     FirstAttempt );
00284 
00285 /*************************************************************************
00286 * Prototypes for the file read.c
00287 *************************************************************************/
00288 extern NTSTATUS NTAPI Ext2Read(
00289 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
00290 PIRP                            Irp);                   // I/O Request Packet
00291 
00292 extern NTSTATUS NTAPI Ext2CommonRead(
00293 PtrExt2IrpContext           PtrIrpContext,
00294 PIRP                        PtrIrp,
00295 BOOLEAN                     FirstAttempt );
00296 
00297 extern void * NTAPI Ext2GetCallersBuffer(
00298 PIRP                        PtrIrp);
00299 
00300 extern NTSTATUS NTAPI Ext2LockCallersBuffer(
00301 PIRP                        PtrIrp,
00302 BOOLEAN                     IsReadOperation,
00303 uint32                      Length);
00304 
00305 extern void NTAPI Ext2MdlComplete(
00306 PtrExt2IrpContext           PtrIrpContext,
00307 PIRP                        PtrIrp,
00308 PIO_STACK_LOCATION          PtrIoStackLocation,
00309 BOOLEAN                     ReadCompletion);
00310 
00311 /*************************************************************************
00312 * Prototypes for the file write.c
00313 *************************************************************************/
00314 extern NTSTATUS NTAPI Ext2Write(
00315 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
00316 PIRP                            Irp);                   // I/O Request Packet
00317 
00318 extern NTSTATUS NTAPI Ext2CommonWrite(
00319 PtrExt2IrpContext           PtrIrpContext,
00320 PIRP                        PtrIrp);
00321 
00322 extern void NTAPI Ext2DeferredWriteCallBack (
00323 void                            *Context1,          // Should be PtrIrpContext
00324 void                            *Context2);         // Should be PtrIrp
00325 
00326 /*************************************************************************
00327 * Prototypes for the file fileinfo.c
00328 *************************************************************************/
00329 extern NTSTATUS NTAPI Ext2FileInfo(
00330 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
00331 PIRP                        Irp);                   // I/O Request Packet
00332 
00333 extern NTSTATUS NTAPI Ext2CommonFileInfo(
00334 PtrExt2IrpContext           PtrIrpContext,
00335 PIRP                        PtrIrp);
00336 
00337 extern NTSTATUS NTAPI Ext2GetBasicInformation(
00338     PtrExt2FCB                  PtrFCB,
00339     PFILE_BASIC_INFORMATION     PtrBuffer,
00340     long                        *PtrReturnedLength);
00341 
00342 extern NTSTATUS NTAPI Ext2GetStandardInformation(
00343     PtrExt2FCB                  PtrFCB,
00344     PFILE_STANDARD_INFORMATION  PtrStdInformation,
00345     long                        *PtrReturnedLength);
00346 
00347 extern NTSTATUS NTAPI Ext2GetNetworkOpenInformation(
00348     PtrExt2FCB                      PtrFCB,
00349     PFILE_NETWORK_OPEN_INFORMATION  PtrNetworkOpenInformation,
00350     long                            *PtrReturnedLength );
00351 
00352 extern NTSTATUS NTAPI Ext2GetFullNameInformation(
00353     PtrExt2FCB              PtrFCB,
00354     PtrExt2CCB              PtrCCB,
00355     PFILE_NAME_INFORMATION  PtrNameInformation,
00356     long                    *PtrReturnedLength);
00357 
00358 extern NTSTATUS NTAPI Ext2SetBasicInformation(
00359     PtrExt2IrpContext           PtrIrpContext,
00360     PtrExt2FCB                  PtrFCB,
00361     PFILE_OBJECT                PtrFileObject,
00362     PFILE_BASIC_INFORMATION     PtrFileInformation );
00363 
00364 extern NTSTATUS NTAPI Ext2SetDispositionInformation(
00365 PtrExt2FCB                  PtrFCB,
00366 PtrExt2CCB                  PtrCCB,
00367 PtrExt2VCB                  PtrVCB,
00368 PFILE_OBJECT                PtrFileObject,
00369 PtrExt2IrpContext           PtrIrpContext,
00370 PIRP                            PtrIrp,
00371 PFILE_DISPOSITION_INFORMATION   PtrBuffer);
00372 
00373 extern NTSTATUS NTAPI Ext2SetAllocationInformation(
00374 PtrExt2FCB                  PtrFCB,
00375 PtrExt2CCB                  PtrCCB,
00376 PtrExt2VCB                  PtrVCB,
00377 PFILE_OBJECT                PtrFileObject,
00378 PtrExt2IrpContext           PtrIrpContext,
00379 PIRP                            PtrIrp,
00380 PFILE_ALLOCATION_INFORMATION    PtrBuffer);
00381 
00382 /*************************************************************************
00383 * Prototypes for the file flush.c
00384 *************************************************************************/
00385 extern NTSTATUS NTAPI Ext2Flush(
00386 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
00387 PIRP                            Irp);                   // I/O Request Packet
00388 
00389 extern NTSTATUS NTAPI Ext2CommonFlush(
00390 PtrExt2IrpContext           PtrIrpContext,
00391 PIRP                            PtrIrp);
00392 
00393 extern void NTAPI Ext2FlushAFile(
00394 PtrExt2NTRequiredFCB        PtrReqdFCB,
00395 PIO_STATUS_BLOCK            PtrIoStatus);
00396 
00397 extern void NTAPI Ext2FlushLogicalVolume(
00398 PtrExt2IrpContext           PtrIrpContext,
00399 PIRP                            PtrIrp,
00400 PtrExt2VCB                  PtrVCB);
00401 
00402 extern NTSTATUS NTAPI Ext2FlushCompletion(
00403 PDEVICE_OBJECT              PtrDeviceObject,
00404 PIRP                            PtrIrp,
00405 PVOID                           Context);
00406 
00407 /*************************************************************************
00408 * Prototypes for the file dircntrl.c
00409 *************************************************************************/
00410 extern NTSTATUS NTAPI Ext2DirControl(
00411 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
00412 PIRP                            Irp);                   // I/O Request Packet
00413 
00414 extern NTSTATUS NTAPI Ext2CommonDirControl(
00415 PtrExt2IrpContext           PtrIrpContext,
00416 PIRP                            PtrIrp);
00417 
00418 extern NTSTATUS NTAPI Ext2QueryDirectory(
00419 PtrExt2IrpContext           PtrIrpContext,
00420 PIRP                        PtrIrp,
00421 PEXTENDED_IO_STACK_LOCATION         PtrIoStackLocation,
00422 PFILE_OBJECT                PtrFileObject,
00423 PtrExt2FCB                  PtrFCB,
00424 PtrExt2CCB                  PtrCCB);
00425 
00426 extern NTSTATUS NTAPI Ext2NotifyChangeDirectory(
00427 PtrExt2IrpContext           PtrIrpContext,
00428 PIRP                        PtrIrp,
00429 PEXTENDED_IO_STACK_LOCATION     PtrIoStackLocation,
00430 PFILE_OBJECT                PtrFileObject,
00431 PtrExt2FCB                  PtrFCB,
00432 PtrExt2CCB                  PtrCCB);
00433 
00434 /*************************************************************************
00435 * Prototypes for the file devcntrl.c
00436 *************************************************************************/
00437 extern NTSTATUS NTAPI Ext2DeviceControl(
00438 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
00439 PIRP                        Irp);                   // I/O Request Packet
00440 
00441 extern NTSTATUS NTAPI Ext2CommonDeviceControl(
00442 PtrExt2IrpContext           PtrIrpContext,
00443 PIRP                        PtrIrp);
00444 
00445 extern NTSTATUS NTAPI Ext2DevIoctlCompletion(
00446 PDEVICE_OBJECT              PtrDeviceObject,
00447 PIRP                        PtrIrp,
00448 void                        *Context);
00449 
00450 extern NTSTATUS NTAPI Ext2HandleQueryPath(
00451 void                        *BufferPointer);
00452 
00453 /*************************************************************************
00454 * Prototypes for the file shutdown.c
00455 *************************************************************************/
00456 extern NTSTATUS NTAPI Ext2Shutdown(
00457 PDEVICE_OBJECT              DeviceObject,       // the logical volume device object
00458 PIRP                        Irp);           // I/O Request Packet
00459 
00460 extern NTSTATUS NTAPI Ext2CommonShutdown(
00461 PtrExt2IrpContext           PtrIrpContext,
00462 PIRP                        PtrIrp);
00463 
00464 /*************************************************************************
00465 * Prototypes for the file volinfo.c
00466 *************************************************************************/
00467 extern NTSTATUS NTAPI Ext2QueryVolInfo(
00468 PDEVICE_OBJECT              DeviceObject,   // the logical volume device object
00469 PIRP                        Irp);           // I/O Request Packet
00470 
00471 NTSTATUS NTAPI Ext2SetVolInfo(
00472     IN PDEVICE_OBJECT       DeviceObject,   // the logical volume device object
00473     IN PIRP                 Irp);           // I/O Request Packet
00474 
00475 
00476 /*************************************************************************
00477 * Prototypes for the file fastio.c
00478 *************************************************************************/
00479 extern BOOLEAN NTAPI Ext2FastIoCheckIfPossible(
00480 IN PFILE_OBJECT             FileObject,
00481 IN PLARGE_INTEGER               FileOffset,
00482 IN ULONG                            Length,
00483 IN BOOLEAN                      Wait,
00484 IN ULONG                            LockKey,
00485 IN BOOLEAN                      CheckForReadOperation,
00486 OUT PIO_STATUS_BLOCK            IoStatus,
00487 IN PDEVICE_OBJECT               DeviceObject);
00488 
00489 extern BOOLEAN NTAPI Ext2FastIoRead(
00490 IN PFILE_OBJECT             FileObject,
00491 IN PLARGE_INTEGER               FileOffset,
00492 IN ULONG                            Length,
00493 IN BOOLEAN                      Wait,
00494 IN ULONG                            LockKey,
00495 OUT PVOID                       Buffer,
00496 OUT PIO_STATUS_BLOCK            IoStatus,
00497 IN PDEVICE_OBJECT               DeviceObject);
00498 
00499 extern BOOLEAN NTAPI Ext2FastIoWrite(
00500 IN PFILE_OBJECT             FileObject,
00501 IN PLARGE_INTEGER               FileOffset,
00502 IN ULONG                            Length,
00503 IN BOOLEAN                      Wait,
00504 IN ULONG                            LockKey,
00505 OUT PVOID                       Buffer,
00506 OUT PIO_STATUS_BLOCK            IoStatus,
00507 IN PDEVICE_OBJECT               DeviceObject);
00508 
00509 extern BOOLEAN NTAPI Ext2FastIoQueryBasicInfo(
00510 IN PFILE_OBJECT                 FileObject,
00511 IN BOOLEAN                          Wait,
00512 OUT PFILE_BASIC_INFORMATION Buffer,
00513 OUT PIO_STATUS_BLOCK            IoStatus,
00514 IN PDEVICE_OBJECT                   DeviceObject);
00515 
00516 extern BOOLEAN NTAPI Ext2FastIoQueryStdInfo(
00517 IN PFILE_OBJECT                     FileObject,
00518 IN BOOLEAN                              Wait,
00519 OUT PFILE_STANDARD_INFORMATION  Buffer,
00520 OUT PIO_STATUS_BLOCK                IoStatus,
00521 IN PDEVICE_OBJECT                       DeviceObject);
00522 
00523 extern BOOLEAN NTAPI Ext2FastIoLock(
00524 IN PFILE_OBJECT             FileObject,
00525 IN PLARGE_INTEGER               FileOffset,
00526 IN PLARGE_INTEGER               Length,
00527 PEPROCESS                       ProcessId,
00528 ULONG                               Key,
00529 BOOLEAN                         FailImmediately,
00530 BOOLEAN                         ExclusiveLock,
00531 OUT PIO_STATUS_BLOCK            IoStatus,
00532 IN PDEVICE_OBJECT               DeviceObject);
00533 
00534 extern BOOLEAN NTAPI Ext2FastIoUnlockSingle(
00535 IN PFILE_OBJECT             FileObject,
00536 IN PLARGE_INTEGER               FileOffset,
00537 IN PLARGE_INTEGER               Length,
00538 PEPROCESS                       ProcessId,
00539 ULONG                               Key,
00540 OUT PIO_STATUS_BLOCK            IoStatus,
00541 IN PDEVICE_OBJECT               DeviceObject);
00542 
00543 extern BOOLEAN NTAPI Ext2FastIoUnlockAll(
00544 IN PFILE_OBJECT             FileObject,
00545 PEPROCESS                       ProcessId,
00546 OUT PIO_STATUS_BLOCK            IoStatus,
00547 IN PDEVICE_OBJECT               DeviceObject);
00548 
00549 extern BOOLEAN NTAPI Ext2FastIoUnlockAllByKey(
00550 IN PFILE_OBJECT             FileObject,
00551 PVOID                       ProcessId,
00552 ULONG                               Key,
00553 OUT PIO_STATUS_BLOCK            IoStatus,
00554 IN PDEVICE_OBJECT               DeviceObject);
00555 
00556 extern void NTAPI Ext2FastIoAcqCreateSec(
00557 IN PFILE_OBJECT             FileObject);
00558 
00559 extern void NTAPI Ext2FastIoRelCreateSec(
00560 IN PFILE_OBJECT             FileObject);
00561 
00562 extern BOOLEAN NTAPI Ext2AcqLazyWrite(
00563 IN PVOID                            Context,
00564 IN BOOLEAN                      Wait);
00565 
00566 extern void NTAPI Ext2RelLazyWrite(
00567 IN PVOID                            Context);
00568 
00569 extern BOOLEAN NTAPI Ext2AcqReadAhead(
00570 IN PVOID                            Context,
00571 IN BOOLEAN                      Wait);
00572 
00573 extern void NTAPI Ext2RelReadAhead(
00574 IN PVOID                            Context);
00575 
00576 // the remaining are only valid under NT Version 4.0 and later
00577 #if(_WIN32_WINNT >= 0x0400)
00578 
00579 extern BOOLEAN NTAPI Ext2FastIoQueryNetInfo(
00580 IN PFILE_OBJECT                                 FileObject,
00581 IN BOOLEAN                                          Wait,
00582 OUT PFILE_NETWORK_OPEN_INFORMATION          Buffer,
00583 OUT PIO_STATUS_BLOCK                            IoStatus,
00584 IN PDEVICE_OBJECT                                   DeviceObject);
00585 
00586 extern BOOLEAN NTAPI Ext2FastIoMdlRead(
00587 IN PFILE_OBJECT             FileObject,
00588 IN PLARGE_INTEGER               FileOffset,
00589 IN ULONG                            Length,
00590 IN ULONG                            LockKey,
00591 OUT PMDL                            *MdlChain,
00592 OUT PIO_STATUS_BLOCK            IoStatus,
00593 IN PDEVICE_OBJECT               DeviceObject);
00594 
00595 extern BOOLEAN NTAPI Ext2FastIoMdlReadComplete(
00596 IN PFILE_OBJECT             FileObject,
00597 OUT PMDL                            MdlChain,
00598 IN PDEVICE_OBJECT               DeviceObject);
00599 
00600 extern BOOLEAN NTAPI Ext2FastIoPrepareMdlWrite(
00601 IN PFILE_OBJECT             FileObject,
00602 IN PLARGE_INTEGER               FileOffset,
00603 IN ULONG                            Length,
00604 IN ULONG                            LockKey,
00605 OUT PMDL                            *MdlChain,
00606 OUT PIO_STATUS_BLOCK            IoStatus,
00607 IN PDEVICE_OBJECT               DeviceObject);
00608 
00609 extern BOOLEAN NTAPI Ext2FastIoMdlWriteComplete(
00610 IN PFILE_OBJECT             FileObject,
00611 IN PLARGE_INTEGER               FileOffset,
00612 OUT PMDL                            MdlChain,
00613 IN PDEVICE_OBJECT               DeviceObject);
00614 
00615 extern NTSTATUS NTAPI Ext2FastIoAcqModWrite(
00616 IN PFILE_OBJECT             FileObject,
00617 IN PLARGE_INTEGER               EndingOffset,
00618 OUT PERESOURCE                  *ResourceToRelease,
00619 IN PDEVICE_OBJECT               DeviceObject);
00620 
00621 extern NTSTATUS NTAPI Ext2FastIoRelModWrite(
00622 IN PFILE_OBJECT             FileObject,
00623 IN PERESOURCE                   ResourceToRelease,
00624 IN PDEVICE_OBJECT               DeviceObject);
00625 
00626 extern NTSTATUS NTAPI Ext2FastIoAcqCcFlush(
00627 IN PFILE_OBJECT             FileObject,
00628 IN PDEVICE_OBJECT               DeviceObject);
00629 
00630 extern NTSTATUS NTAPI Ext2FastIoRelCcFlush(
00631 IN PFILE_OBJECT             FileObject,
00632 IN PDEVICE_OBJECT               DeviceObject);
00633 
00634 #endif  // (_WIN32_WINNT >= 0x0400)
00635 
00636 /*************************************************************************
00637 * Prototypes for the file DiskIO.c
00638 *************************************************************************/
00639 extern NTSTATUS NTAPI Ext2ReadLogicalBlocks(
00640 PDEVICE_OBJECT      PtrTargetDeviceObject,  //  the Target Device Object
00641 VOID                *Buffer,                //  The Buffer that takes the data read in
00642 LARGE_INTEGER       StartLogicalBlock,      //  The logical block from which reading is to start
00643 unsigned int        NoOfLogicalBlocks);     //  The no. of logical blocks to be read
00644 
00645 extern NTSTATUS NTAPI Ext2ReadPhysicalBlocks(
00646     PDEVICE_OBJECT      PtrTargetDeviceObject,  //  the Target Device Object
00647     VOID                *Buffer,                //  The Buffer that takes the data read in
00648     LARGE_INTEGER       StartBlock,     //  The Physical block from which reading is to start
00649     unsigned int        NoOfBlocks);        //  The no. of Physical blocks to be read
00650 
00651 /*************************************************************************
00652 * Prototypes for the file metadata.c
00653 *************************************************************************/
00654 
00655 extern void NTAPI Ext2InitializeFCBInodeInfo (
00656     PtrExt2FCB  PtrFCB );
00657 
00658 extern NTSTATUS NTAPI Ext2ReadInode(
00659     PtrExt2VCB          PtrVcb,         //  the Volume Control Block
00660     uint32              InodeNo,        //  The Inode no
00661     PEXT2_INODE         PtrInode );     //  The Inode Buffer
00662 
00663 extern NTSTATUS NTAPI Ext2WriteInode(
00664     PtrExt2IrpContext   PtrIrpContext,
00665     PtrExt2VCB          PtrVcb,         //  the Volume Control Block
00666     uint32              InodeNo,        //  The Inode no
00667     PEXT2_INODE         PtrInode        //  The Inode Buffer
00668     );                  
00669 
00670 extern ULONG NTAPI Ext2AllocInode( 
00671     PtrExt2IrpContext   PtrIrpContext,
00672     PtrExt2VCB          PtrVCB,
00673     ULONG               ParentINodeNo );
00674 
00675 extern BOOLEAN NTAPI Ext2DeallocInode( 
00676     PtrExt2IrpContext   PtrIrpContext,
00677     PtrExt2VCB          PtrVCB,
00678     ULONG               INodeNo );
00679 
00680 extern BOOLEAN NTAPI Ext2MakeNewDirectoryEntry( 
00681     PtrExt2IrpContext   PtrIrpContext,      //  The Irp context
00682     PtrExt2FCB          PtrParentFCB,       //  Parent Folder FCB
00683     PFILE_OBJECT        PtrFileObject,      //  Parent Folder Object
00684     PUNICODE_STRING     PtrName,            //  New entry's name
00685     ULONG               Type,               //  The type of the new entry
00686     ULONG               NewInodeNo);        //  The inode no of the new entry...
00687 
00688 extern BOOLEAN NTAPI Ext2FreeDirectoryEntry(
00689     PtrExt2IrpContext   PtrIrpContext,
00690     PtrExt2FCB          PtrParentFCB,
00691     PUNICODE_STRING     PtrName);
00692 
00693 extern BOOLEAN NTAPI Ext2AddBlockToFile(
00694     PtrExt2IrpContext   PtrIrpContext,
00695     PtrExt2VCB          PtrVCB,
00696     PtrExt2FCB          PtrFCB,
00697     PFILE_OBJECT        PtrFileObject,
00698     BOOLEAN             UpdateFileSize);
00699 
00700 extern BOOLEAN NTAPI Ext2ReleaseDataBlocks(
00701     PtrExt2FCB          PtrFCB,
00702     PtrExt2IrpContext   PtrIrpContext);
00703 
00704 extern BOOLEAN NTAPI Ext2TruncateFileAllocationSize(
00705     PtrExt2IrpContext   PtrIrpContext,
00706     PtrExt2FCB          PtrFCB,
00707     PFILE_OBJECT        PtrFileObject,
00708     PLARGE_INTEGER      PtrAllocationSize );
00709 
00710 extern ULONG NTAPI Ext2AllocBlock( 
00711     PtrExt2IrpContext   PtrIrpContext,
00712     PtrExt2VCB          PtrVCB,
00713     ULONG               Count);
00714 
00715 extern BOOLEAN NTAPI Ext2DeallocBlock( 
00716     PtrExt2IrpContext   PtrIrpContext,
00717     PtrExt2VCB          PtrVCB,
00718     ULONG               BlockNo);
00719 
00720 extern BOOLEAN NTAPI Ext2UpdateFileSize(
00721     PtrExt2IrpContext   PtrIrpContext,
00722     PFILE_OBJECT        PtrFileObject,
00723     PtrExt2FCB          PtrFCB);
00724 
00725 
00726 extern BOOLEAN NTAPI Ext2DeleteFile(
00727     PtrExt2FCB          PtrFCB,
00728     PtrExt2IrpContext   PtrIrpContext);
00729 
00730 extern BOOLEAN NTAPI Ext2IsDirectoryEmpty(
00731     PtrExt2FCB          PtrFCB,
00732     PtrExt2CCB          PtrCCB,
00733     PtrExt2IrpContext   PtrIrpContext);
00734 
00735 extern NTSTATUS NTAPI Ext2RenameOrLinkFile( 
00736     PtrExt2FCB                  PtrSourceFCB, 
00737     PFILE_OBJECT                PtrSourceFileObject,    
00738     PtrExt2IrpContext           PtrIrpContext,
00739     PIRP                        PtrIrp, 
00740     PFILE_RENAME_INFORMATION    PtrRenameInfo);
00741 /*************************************************************************
00742 * Prototypes for the file io.c
00743 *************************************************************************/
00744 extern NTSTATUS NTAPI Ext2PassDownSingleReadWriteIRP(
00745     PtrExt2IrpContext   PtrIrpContext,
00746     PIRP                PtrIrp, 
00747     PtrExt2VCB          PtrVCB,
00748     LARGE_INTEGER       ByteOffset, 
00749     uint32              ReadWriteLength, 
00750     BOOLEAN             SynchronousIo);
00751 
00752 extern NTSTATUS NTAPI Ext2PassDownMultiReadWriteIRP( 
00753     PEXT2_IO_RUN            PtrIoRuns, 
00754     UINT                    Count, 
00755     ULONG                   TotalReadWriteLength,
00756     PtrExt2IrpContext       PtrIrpContext,
00757     PtrExt2FCB              PtrFCB,
00758     BOOLEAN                 SynchronousIo);
00759 
00760 extern NTSTATUS NTAPI Ext2SingleSyncCompletionRoutine(
00761     IN PDEVICE_OBJECT DeviceObject,
00762     IN PIRP Irp,
00763     IN PVOID Contxt
00764     );
00765 
00766 extern NTSTATUS NTAPI Ext2SingleAsyncCompletionRoutine (
00767     IN PDEVICE_OBJECT DeviceObject,
00768     IN PIRP Irp,
00769     IN PVOID Contxt
00770     );
00771 
00772 extern NTSTATUS NTAPI Ext2MultiSyncCompletionRoutine(
00773     IN PDEVICE_OBJECT DeviceObject,
00774     IN PIRP Irp,
00775     IN PVOID Contxt);
00776 
00777 extern NTSTATUS NTAPI Ext2MultiAsyncCompletionRoutine(
00778     IN PDEVICE_OBJECT DeviceObject,
00779     IN PIRP Irp,
00780     IN PVOID Contxt);
00781 
00782 #endif  // _EXT2_PROTOS_H_

Generated on Sun May 27 2012 04:27:38 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.