Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenprotos.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
1.7.6.1
|