OpenAFS
OpenAFS distributed network file system
|
00001 /* 00002 * Copyright (c) 2008, 2009, 2010, 2011 Kernel Drivers, LLC. 00003 * Copyright (c) 2009, 2010, 2011 Your File System, Inc. 00004 * All rights reserved. 00005 * 00006 * Redistribution and use in source and binary forms, with or without 00007 * modification, are permitted provided that the following conditions 00008 * are met: 00009 * 00010 * - Redistributions of source code must retain the above copyright notice, 00011 * this list of conditions and the following disclaimer. 00012 * - Redistributions in binary form must reproduce the above copyright 00013 * notice, 00014 * this list of conditions and the following disclaimer in the 00015 * documentation 00016 * and/or other materials provided with the distribution. 00017 * - Neither the names of Kernel Drivers, LLC and Your File System, Inc. 00018 * nor the names of their contributors may be used to endorse or promote 00019 * products derived from this software without specific prior written 00020 * permission from Kernel Drivers, LLC and Your File System, Inc. 00021 * 00022 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00023 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 00024 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 00025 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 00026 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00027 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00028 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00029 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00030 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00031 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00032 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00033 */ 00034 00035 #ifndef _AFS_COMMON_H 00036 #define _AFS_COMMON_H 00037 00038 // 00039 // File: AFSCommon.h 00040 // 00041 00042 extern "C" 00043 { 00044 00045 #define AFS_KERNEL_MODE 00046 00047 #include <ntifs.h> 00048 #include <wdmsec.h> // for IoCreateDeviceSecure 00049 #include <initguid.h> 00050 #include <ntintsafe.h> 00051 00052 #include "AFSDefines.h" 00053 00054 #include "AFSUserDefines.h" 00055 00056 #include "AFSUserIoctl.h" 00057 00058 #include "AFSUserStructs.h" 00059 00060 #include "AFSRedirCommonDefines.h" 00061 00062 #include "AFSRedirCommonStructs.h" 00063 00064 #include "AFSStructs.h" 00065 00066 #include "AFSProvider.h" 00067 00068 #ifndef NO_EXTERN 00069 #include "AFSExtern.h" 00070 #endif 00071 00072 #define NTSTRSAFE_LIB 00073 #include "ntstrsafe.h" 00074 00075 NTSTATUS 00076 ZwQueryInformationProcess( 00077 __in HANDLE ProcessHandle, 00078 __in PROCESSINFOCLASS ProcessInformationClass, 00079 __out PVOID ProcessInformation, 00080 __in ULONG ProcessInformationLength, 00081 __out_opt PULONG ReturnLength 00082 ); 00083 00084 NTSYSAPI 00085 NTSTATUS 00086 NTAPI 00087 RtlAbsoluteToSelfRelativeSD( IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor, 00088 OUT PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor, 00089 IN OUT PULONG BufferLength ); 00090 00091 #ifndef FILE_OPEN_REPARSE_POINT 00092 #define FILE_OPEN_REPARSE_POINT 0x00200000 00093 #endif 00094 // 00095 // AFSBTreeSupport.cpp Prototypes 00096 // 00097 00098 NTSTATUS 00099 AFSLocateCaseSensitiveDirEntry( IN AFSDirectoryCB *RootNode, 00100 IN ULONG Index, 00101 IN OUT AFSDirectoryCB **DirEntry); 00102 00103 NTSTATUS 00104 AFSLocateCaseInsensitiveDirEntry( IN AFSDirectoryCB *RootNode, 00105 IN ULONG Index, 00106 IN OUT AFSDirectoryCB **DirEntry); 00107 00108 NTSTATUS 00109 AFSInsertCaseSensitiveDirEntry( IN AFSDirectoryCB *RootNode, 00110 IN AFSDirectoryCB *DirEntry); 00111 00112 NTSTATUS 00113 AFSInsertCaseInsensitiveDirEntry( IN AFSDirectoryCB *RootNode, 00114 IN AFSDirectoryCB *DirEntry); 00115 00116 NTSTATUS 00117 AFSRemoveCaseSensitiveDirEntry( IN AFSDirectoryCB **RootNode, 00118 IN AFSDirectoryCB *DirEntry); 00119 00120 NTSTATUS 00121 AFSRemoveCaseInsensitiveDirEntry( IN AFSDirectoryCB **RootNode, 00122 IN AFSDirectoryCB *DirEntry); 00123 00124 NTSTATUS 00125 AFSLocateShortNameDirEntry( IN AFSDirectoryCB *RootNode, 00126 IN ULONG Index, 00127 IN OUT AFSDirectoryCB **DirEntry); 00128 00129 NTSTATUS 00130 AFSInsertShortNameDirEntry( IN AFSDirectoryCB *RootNode, 00131 IN AFSDirectoryCB *DirEntry); 00132 00133 NTSTATUS 00134 AFSRemoveShortNameDirEntry( IN AFSDirectoryCB **RootNode, 00135 IN AFSDirectoryCB *DirEntry); 00136 00137 NTSTATUS 00138 AFSLocateHashEntry( IN AFSBTreeEntry *TopNode, 00139 IN ULONGLONG HashIndex, 00140 IN OUT AFSBTreeEntry **TreeEntry); 00141 00142 NTSTATUS 00143 AFSInsertHashEntry( IN AFSBTreeEntry *TopNode, 00144 IN AFSBTreeEntry *FileIDEntry); 00145 00146 NTSTATUS 00147 AFSRemoveHashEntry( IN AFSBTreeEntry **TopNode, 00148 IN AFSBTreeEntry *FileIDEntry); 00149 00150 // 00151 // AFSInit.cpp Prototypes 00152 // 00153 00154 NTSTATUS 00155 DriverEntry( IN PDRIVER_OBJECT DriverObj, 00156 IN PUNICODE_STRING RegPath); 00157 00158 void 00159 AFSUnload( IN PDRIVER_OBJECT DriverObject); 00160 00161 // 00162 // AFSCommSupport.cpp Prototypes 00163 // 00164 00165 NTSTATUS 00166 AFSEnumerateDirectory( IN GUID *AuthGroup, 00167 IN AFSObjectInfoCB *ObjectInfoCB, 00168 IN BOOLEAN FastQuery); 00169 00170 NTSTATUS 00171 AFSEnumerateDirectoryNoResponse( IN GUID *AuthGroup, 00172 IN AFSFileID *FileId); 00173 00174 NTSTATUS 00175 AFSVerifyDirectoryContent( IN AFSObjectInfoCB *ObjectInfo, 00176 IN GUID *AuthGroup); 00177 00178 NTSTATUS 00179 AFSNotifyFileCreate( IN GUID *AuthGroup, 00180 IN AFSObjectInfoCB *ParentObjectInfo, 00181 IN PLARGE_INTEGER FileSize, 00182 IN ULONG FileAttributes, 00183 IN UNICODE_STRING *FileName, 00184 OUT AFSDirectoryCB **DirNode); 00185 00186 NTSTATUS 00187 AFSUpdateFileInformation( IN AFSFileID *ParentFid, 00188 IN AFSObjectInfoCB *ObjectInfo, 00189 IN GUID *AuthGroup); 00190 00191 NTSTATUS 00192 AFSNotifyDelete( IN AFSDirectoryCB *DirectoryCB, 00193 IN GUID *AuthGroup, 00194 IN BOOLEAN CheckOnly); 00195 00196 NTSTATUS 00197 AFSNotifyRename( IN AFSObjectInfoCB *ObjectInfo, 00198 IN GUID *AuthGroup, 00199 IN AFSObjectInfoCB *ParentObjectInfo, 00200 IN AFSObjectInfoCB *TargetParentObjectInfo, 00201 IN AFSDirectoryCB *DirectoryCB, 00202 IN UNICODE_STRING *TargetName, 00203 OUT AFSFileID *UpdatedFID); 00204 00205 NTSTATUS 00206 AFSEvaluateTargetByID( IN AFSObjectInfoCB *ObjectInfo, 00207 IN GUID *AuthGroup, 00208 IN BOOLEAN FastCall, 00209 OUT AFSDirEnumEntry **DirEnumEntry); 00210 00211 NTSTATUS 00212 AFSEvaluateTargetByName( IN GUID *AuthGroup, 00213 IN AFSObjectInfoCB *ParentObjectInfo, 00214 IN PUNICODE_STRING SourceName, 00215 OUT AFSDirEnumEntry **DirEnumEntry); 00216 00217 NTSTATUS 00218 AFSRetrieveVolumeInformation( IN GUID *AuthGroup, 00219 IN AFSFileID *FileID, 00220 OUT AFSVolumeInfoCB *VolumeInformation); 00221 00222 NTSTATUS 00223 AFSRetrieveVolumeSizeInformation( IN GUID *AuthGroup, 00224 IN AFSFileID *FileID, 00225 OUT AFSVolumeSizeInfoCB *VolumeSizeInformation); 00226 00227 NTSTATUS 00228 AFSNotifyPipeTransceive( IN AFSCcb *Ccb, 00229 IN ULONG InputLength, 00230 IN ULONG OutputLength, 00231 IN void *InputDataBuffer, 00232 OUT void *OutputDataBuffer, 00233 OUT ULONG *BytesReturned); 00234 00235 NTSTATUS 00236 AFSNotifySetPipeInfo( IN AFSCcb *Ccb, 00237 IN ULONG InformationClass, 00238 IN ULONG InputLength, 00239 IN void *DataBuffer); 00240 00241 NTSTATUS 00242 AFSNotifyQueryPipeInfo( IN AFSCcb *Ccb, 00243 IN ULONG InformationClass, 00244 IN ULONG OutputLength, 00245 IN void *DataBuffer, 00246 OUT ULONG *BytesReturned); 00247 00248 NTSTATUS 00249 AFSReleaseFid( IN AFSFileID *FileId); 00250 00251 BOOLEAN 00252 AFSIsExtentRequestQueued( IN AFSFileID *FileID, 00253 IN LARGE_INTEGER *ExtentOffset, 00254 IN ULONG Length); 00255 00256 // 00257 // AFSCreate.cpp Prototypes 00258 // 00259 00260 NTSTATUS 00261 AFSCreate( IN PDEVICE_OBJECT DeviceObject, 00262 IN PIRP Irp); 00263 00264 NTSTATUS 00265 AFSCommonCreate( IN PDEVICE_OBJECT DeviceObject, 00266 IN PIRP Irp); 00267 00268 NTSTATUS 00269 AFSOpenRedirector( IN PIRP Irp, 00270 IN AFSFcb **Fcb, 00271 IN AFSCcb **Ccb); 00272 00273 NTSTATUS 00274 AFSOpenAFSRoot( IN PIRP Irp, 00275 IN AFSFcb **Fcb, 00276 IN AFSCcb **Ccb); 00277 00278 NTSTATUS 00279 AFSOpenRoot( IN PIRP Irp, 00280 IN AFSVolumeCB *VolumeCB, 00281 IN GUID *AuthGroup, 00282 OUT AFSFcb **Fcb, 00283 OUT AFSCcb **Ccb); 00284 00285 NTSTATUS 00286 AFSProcessCreate( IN PIRP Irp, 00287 IN GUID *AuthGroup, 00288 IN AFSVolumeCB *VolumeCB, 00289 IN AFSDirectoryCB *ParentDirCB, 00290 IN PUNICODE_STRING FileName, 00291 IN PUNICODE_STRING ComponentName, 00292 IN PUNICODE_STRING FullFileName, 00293 OUT AFSFcb **Fcb, 00294 OUT AFSCcb **Ccb); 00295 00296 NTSTATUS 00297 AFSOpenTargetDirectory( IN PIRP Irp, 00298 IN AFSVolumeCB *VolumeCB, 00299 IN AFSDirectoryCB *ParentDirectoryCB, 00300 IN AFSDirectoryCB *TargetDirectoryCB, 00301 IN UNICODE_STRING *TargetName, 00302 OUT AFSFcb **Fcb, 00303 OUT AFSCcb **Ccb); 00304 00305 NTSTATUS 00306 AFSProcessOpen( IN PIRP Irp, 00307 IN GUID *AuthGroup, 00308 IN AFSVolumeCB *VolumeCB, 00309 IN AFSDirectoryCB *ParentDirCB, 00310 IN AFSDirectoryCB *DirectoryCB, 00311 OUT AFSFcb **Fcb, 00312 OUT AFSCcb **Ccb); 00313 00314 NTSTATUS 00315 AFSProcessOverwriteSupersede( IN PDEVICE_OBJECT DeviceObject, 00316 IN PIRP Irp, 00317 IN AFSVolumeCB *VolumeCB, 00318 IN GUID *AuthGroup, 00319 IN AFSDirectoryCB *ParentDirCB, 00320 IN AFSDirectoryCB *DirectoryCB, 00321 OUT AFSFcb **Fcb, 00322 OUT AFSCcb **Ccb); 00323 00324 NTSTATUS 00325 AFSControlDeviceCreate( IN PIRP Irp); 00326 00327 NTSTATUS 00328 AFSOpenIOCtlFcb( IN PIRP Irp, 00329 IN GUID *AuthGroup, 00330 IN AFSDirectoryCB *ParentDirCB, 00331 OUT AFSFcb **Fcb, 00332 OUT AFSCcb **Ccb); 00333 00334 NTSTATUS 00335 AFSOpenSpecialShareFcb( IN PIRP Irp, 00336 IN GUID *AuthGroup, 00337 IN AFSDirectoryCB *DirectoryCB, 00338 OUT AFSFcb **Fcb, 00339 OUT AFSCcb **Ccb); 00340 00341 // 00342 // AFSExtentsSupport.cpp Prototypes 00343 // 00344 VOID 00345 AFSLockForExtentsTrim( IN AFSFcb *Fcb); 00346 00347 PAFSExtent 00348 AFSExtentForOffset( IN AFSFcb *Fcb, 00349 IN PLARGE_INTEGER Offset, 00350 IN BOOLEAN ReturnPrevious); 00351 BOOLEAN 00352 AFSExtentContains( IN AFSExtent *Extent, IN PLARGE_INTEGER Offset); 00353 00354 00355 NTSTATUS 00356 AFSRequestExtents( IN AFSFcb *Fcb, 00357 IN AFSCcb *Ccb, 00358 IN PLARGE_INTEGER Offset, 00359 IN ULONG Size, 00360 OUT BOOLEAN *FullyMApped); 00361 00362 BOOLEAN AFSDoExtentsMapRegion(IN AFSFcb *Fcb, 00363 IN PLARGE_INTEGER Offset, 00364 IN ULONG Size, 00365 IN OUT AFSExtent **FirstExtent, 00366 OUT AFSExtent **LastExtent); 00367 00368 NTSTATUS 00369 AFSRequestExtentsAsync( IN AFSFcb *Fcb, 00370 IN AFSCcb *Ccb, 00371 IN PLARGE_INTEGER Offset, 00372 IN ULONG Size); 00373 00374 NTSTATUS 00375 AFSWaitForExtentMapping ( IN AFSFcb *Fcb, 00376 IN AFSCcb *Ccb); 00377 00378 NTSTATUS 00379 AFSProcessSetFileExtents( IN AFSSetFileExtentsCB *SetExtents ); 00380 00381 NTSTATUS 00382 AFSProcessReleaseFileExtents( IN PIRP Irp); 00383 00384 NTSTATUS 00385 AFSProcessExtentFailure( PIRP Irp); 00386 00387 NTSTATUS 00388 AFSProcessSetExtents( IN AFSFcb *pFcb, 00389 IN ULONG Count, 00390 IN AFSFileExtentCB *Result); 00391 00392 NTSTATUS 00393 AFSFlushExtents( IN AFSFcb *pFcb, 00394 IN GUID *AuthGroup); 00395 00396 NTSTATUS 00397 AFSReleaseExtentsWithFlush( IN AFSFcb *Fcb, 00398 IN GUID *AuthGroup, 00399 IN BOOLEAN bReleaseAll); 00400 00401 NTSTATUS 00402 AFSReleaseCleanExtents( IN AFSFcb *Fcb, 00403 IN GUID *AuthGroup); 00404 00405 VOID 00406 AFSMarkDirty( IN AFSFcb *pFcb, 00407 IN AFSExtent *StartExtent, 00408 IN ULONG ExtentsCount, 00409 IN LARGE_INTEGER *StartingByte, 00410 IN BOOLEAN DerefExtents); 00411 00412 VOID 00413 AFSTearDownFcbExtents( IN AFSFcb *Fcb, 00414 IN GUID *AuthGroup); 00415 00416 void 00417 AFSTrimExtents( IN AFSFcb *Fcb, 00418 IN PLARGE_INTEGER FileSize); 00419 00420 void 00421 AFSTrimSpecifiedExtents( IN AFSFcb *Fcb, 00422 IN ULONG Count, 00423 IN AFSFileExtentCB *Result); 00424 00425 void 00426 AFSReferenceActiveExtents( IN AFSExtent *StartExtent, 00427 IN ULONG ExtentsCount); 00428 00429 void 00430 AFSDereferenceActiveExtents( IN AFSExtent *StartExtent, 00431 IN ULONG ExtentsCount); 00432 00433 void 00434 AFSRemoveEntryDirtyList( IN AFSFcb *Fcb, 00435 IN AFSExtent *Extent); 00436 00437 AFSExtent * 00438 ExtentFor( PLIST_ENTRY le, ULONG SkipList ); 00439 00440 AFSExtent * 00441 NextExtent( AFSExtent *Extent, ULONG SkipList ); 00442 00443 ULONG 00444 AFSConstructCleanByteRangeList( AFSFcb * pFcb, 00445 AFSByteRange ** pByteRangeList); 00446 00447 #if GEN_MD5 00448 void 00449 AFSSetupMD5Hash( IN AFSFcb *Fcb, 00450 IN AFSExtent *StartExtent, 00451 IN ULONG ExtentsCount, 00452 IN void *SystemBuffer, 00453 IN LARGE_INTEGER *ByteOffset, 00454 IN ULONG ByteCount); 00455 #endif 00456 00457 // 00458 // 00459 // AFSIoSupp.cpp Prototypes 00460 // 00461 NTSTATUS 00462 AFSGetExtents( IN AFSFcb *pFcb, 00463 IN PLARGE_INTEGER Offset, 00464 IN ULONG Length, 00465 IN AFSExtent *From, 00466 OUT ULONG *ExtentCount, 00467 OUT ULONG *RunCount); 00468 00469 NTSTATUS 00470 AFSSetupIoRun( IN PDEVICE_OBJECT CacheDevice, 00471 IN PIRP MasterIrp, 00472 IN PVOID SystemBuffer, 00473 IN OUT AFSIoRun *IoRun, 00474 IN PLARGE_INTEGER Start, 00475 IN ULONG Length, 00476 IN AFSExtent *From, 00477 IN OUT ULONG *RunCount); 00478 00479 NTSTATUS 00480 AFSStartIos( IN FILE_OBJECT *CacheFileObject, 00481 IN UCHAR FunctionCode, 00482 IN ULONG IrpFlags, 00483 IN AFSIoRun *IoRun, 00484 IN ULONG Count, 00485 IN OUT AFSGatherIo *Gather); 00486 00487 VOID 00488 AFSCompleteIo( IN AFSGatherIo *Gather, 00489 IN NTSTATUS Status); 00490 00491 NTSTATUS 00492 AFSProcessExtentRun( IN PVOID SystemBuffer, 00493 IN PLARGE_INTEGER Start, 00494 IN ULONG Length, 00495 IN AFSExtent *From, 00496 IN BOOLEAN WriteRequest); 00497 00498 // 00499 // AFSClose.cpp Prototypes 00500 // 00501 00502 NTSTATUS 00503 AFSClose( IN PDEVICE_OBJECT DeviceObject, 00504 IN PIRP Irp); 00505 00506 // 00507 // AFSFcbSupport.cpp Prototypes 00508 // 00509 00510 NTSTATUS 00511 AFSInitFcb( IN AFSDirectoryCB *DirEntry); 00512 00513 NTSTATUS 00514 AFSInitVolume( IN GUID *AuthGroup, 00515 IN AFSFileID *RootFid, 00516 OUT AFSVolumeCB **VolumeCB); 00517 00518 NTSTATUS 00519 AFSRemoveVolume( IN AFSVolumeCB *VolumeCB); 00520 00521 NTSTATUS 00522 AFSInitRootFcb( IN ULONGLONG ProcessID, 00523 IN AFSVolumeCB *VolumeCB); 00524 00525 void 00526 AFSRemoveRootFcb( IN AFSFcb *RootFcb); 00527 00528 NTSTATUS 00529 AFSInitCcb( IN OUT AFSCcb **Ccb); 00530 00531 void 00532 AFSRemoveFcb( IN AFSFcb **Fcb); 00533 00534 NTSTATUS 00535 AFSRemoveCcb( IN AFSFcb *Fcb, 00536 IN AFSCcb *Ccb); 00537 00538 NTSTATUS 00539 AFSInsertCcb( IN AFSFcb *Fcb, 00540 IN AFSCcb *Ccb); 00541 00542 // 00543 // AFSNameSupport.cpp Prototypes 00544 // 00545 00546 NTSTATUS 00547 AFSLocateNameEntry( IN GUID *AuthGroup, 00548 IN PFILE_OBJECT FileObject, 00549 IN UNICODE_STRING *RootPathName, 00550 IN UNICODE_STRING *ParsedPathName, 00551 IN AFSNameArrayHdr *NameArray, 00552 IN ULONG Flags, 00553 OUT AFSVolumeCB **VolumeCB, 00554 IN OUT AFSDirectoryCB **ParentDirectoryCB, 00555 OUT AFSDirectoryCB **DirectoryCB, 00556 OUT PUNICODE_STRING ComponentName); 00557 00558 NTSTATUS 00559 AFSCreateDirEntry( IN GUID *AuthGroup, 00560 IN AFSObjectInfoCB *ParentObjectInfo, 00561 IN AFSDirectoryCB *ParentDirCB, 00562 IN PUNICODE_STRING FileName, 00563 IN PUNICODE_STRING ComponentName, 00564 IN ULONG Attributes, 00565 IN OUT AFSDirectoryCB **DirEntry); 00566 00567 void 00568 AFSInsertDirectoryNode( IN AFSObjectInfoCB *ParentObjectInfo, 00569 IN AFSDirectoryCB *DirEntry, 00570 IN BOOLEAN InsertInEnumList); 00571 00572 NTSTATUS 00573 AFSDeleteDirEntry( IN AFSObjectInfoCB *ParentObjectInfo, 00574 IN AFSDirectoryCB *DirEntry); 00575 00576 NTSTATUS 00577 AFSRemoveDirNodeFromParent( IN AFSObjectInfoCB *ParentObjectInfo, 00578 IN AFSDirectoryCB *DirEntry, 00579 IN BOOLEAN RemoveFromEnumList); 00580 00581 NTSTATUS 00582 AFSFixupTargetName( IN OUT PUNICODE_STRING FileName, 00583 IN OUT PUNICODE_STRING TargetFileName); 00584 00585 NTSTATUS 00586 AFSParseName( IN PIRP Irp, 00587 IN GUID *AuthGroup, 00588 OUT PUNICODE_STRING FileName, 00589 OUT PUNICODE_STRING ParsedFileName, 00590 OUT PUNICODE_STRING RootFileName, 00591 OUT ULONG *ParseFlags, 00592 OUT AFSVolumeCB **VolumeCB, 00593 OUT AFSDirectoryCB **ParentDirectoryCB, 00594 OUT AFSNameArrayHdr **NameArray); 00595 00596 NTSTATUS 00597 AFSCheckCellName( IN GUID *AuthGroup, 00598 IN UNICODE_STRING *CellName, 00599 OUT AFSDirectoryCB **ShareDirEntry); 00600 00601 NTSTATUS 00602 AFSBuildMountPointTarget( IN GUID *AuthGroup, 00603 IN AFSDirectoryCB *DirectoryCB, 00604 OUT AFSVolumeCB **VolumeCB); 00605 00606 NTSTATUS 00607 AFSBuildRootVolume( IN GUID *AuthGroup, 00608 IN AFSFileID *FileId, 00609 OUT AFSVolumeCB **TargetVolumeCB); 00610 00611 NTSTATUS 00612 AFSProcessDFSLink( IN AFSDirectoryCB *DirEntry, 00613 IN PFILE_OBJECT FileObject, 00614 IN UNICODE_STRING *RemainingPath, 00615 IN GUID *AuthGroup); 00616 00617 // 00618 // AFSNetworkProviderSupport.cpp 00619 // 00620 00621 NTSTATUS 00622 AFSAddConnection( IN AFSNetworkProviderConnectionCB *ConnectCB, 00623 IN OUT PULONG ResultStatus, 00624 IN OUT ULONG_PTR *ReturnOutputBufferLength); 00625 00626 NTSTATUS 00627 AFSCancelConnection( IN AFSNetworkProviderConnectionCB *ConnectCB, 00628 IN OUT AFSCancelConnectionResultCB *ConnectionResult, 00629 IN OUT ULONG_PTR *ReturnOutputBufferLength); 00630 00631 NTSTATUS 00632 AFSGetConnection( IN AFSNetworkProviderConnectionCB *ConnectCB, 00633 IN OUT WCHAR *RemoteName, 00634 IN ULONG RemoteNameBufferLength, 00635 IN OUT ULONG_PTR *ReturnOutputBufferLength); 00636 00637 NTSTATUS 00638 AFSListConnections( IN OUT AFSNetworkProviderConnectionCB *ConnectCB, 00639 IN ULONG ConnectionBufferLength, 00640 IN OUT ULONG_PTR *ReturnOutputBufferLength); 00641 00642 void 00643 AFSInitializeConnectionInfo( IN AFSProviderConnectionCB *Connection, 00644 IN ULONG DisplayType); 00645 00646 AFSProviderConnectionCB * 00647 AFSLocateEnumRootEntry( IN UNICODE_STRING *RemoteName); 00648 00649 NTSTATUS 00650 AFSEnumerateConnection( IN OUT AFSNetworkProviderConnectionCB *ConnectCB, 00651 IN AFSProviderConnectionCB *RootConnection, 00652 IN ULONG BufferLength, 00653 OUT PULONG CopiedLength); 00654 00655 NTSTATUS 00656 AFSGetConnectionInfo( IN AFSNetworkProviderConnectionCB *ConnectCB, 00657 IN ULONG BufferLength, 00658 IN OUT ULONG_PTR *ReturnOutputBufferLength); 00659 00660 BOOLEAN 00661 AFSIsDriveMapped( IN WCHAR DriveMapping); 00662 00663 // 00664 // AFSRead.cpp Prototypes 00665 // 00666 00667 NTSTATUS 00668 AFSCommonRead( IN PDEVICE_OBJECT DeviceObject, 00669 IN PIRP Irp, 00670 IN HANDLE OnBehalfOf); 00671 00672 NTSTATUS 00673 AFSRead( IN PDEVICE_OBJECT DeviceObject, 00674 IN PIRP Irp); 00675 00676 00677 NTSTATUS 00678 AFSIOCtlRead( IN PDEVICE_OBJECT DeviceObject, 00679 IN PIRP Irp); 00680 00681 NTSTATUS 00682 AFSShareRead( IN PDEVICE_OBJECT DeviceObject, 00683 IN PIRP Irp); 00684 00685 // 00686 // AFSWrite.cpp Prototypes 00687 // 00688 00689 NTSTATUS 00690 AFSCommonWrite( IN PDEVICE_OBJECT DeviceObject, 00691 IN PIRP Irp, 00692 IN HANDLE CallingUser); 00693 00694 NTSTATUS 00695 AFSWrite( IN PDEVICE_OBJECT DeviceObject, 00696 IN PIRP Irp); 00697 00698 NTSTATUS 00699 AFSIOCtlWrite( IN PDEVICE_OBJECT DeviceObject, 00700 IN PIRP Irp); 00701 00702 NTSTATUS 00703 AFSShareWrite( IN PDEVICE_OBJECT DeviceObject, 00704 IN PIRP Irp); 00705 00706 // 00707 // AFSFileInfo.cpp Prototypes 00708 // 00709 00710 NTSTATUS 00711 AFSQueryFileInfo( IN PDEVICE_OBJECT DeviceObject, 00712 IN PIRP Irp); 00713 00714 NTSTATUS 00715 AFSQueryBasicInfo( IN PIRP Irp, 00716 IN AFSDirectoryCB *DirectoryCB, 00717 IN OUT PFILE_BASIC_INFORMATION Buffer, 00718 IN OUT PLONG Length); 00719 00720 NTSTATUS 00721 AFSQueryStandardInfo( IN PIRP Irp, 00722 IN AFSDirectoryCB *DirectoryCB, 00723 IN OUT PFILE_STANDARD_INFORMATION Buffer, 00724 IN OUT PLONG Length); 00725 00726 NTSTATUS 00727 AFSQueryInternalInfo( IN PIRP Irp, 00728 IN AFSFcb *Fcb, 00729 IN OUT PFILE_INTERNAL_INFORMATION Buffer, 00730 IN OUT PLONG Length); 00731 00732 NTSTATUS 00733 AFSQueryEaInfo( IN PIRP Irp, 00734 IN AFSDirectoryCB *DirectoryCB, 00735 IN OUT PFILE_EA_INFORMATION Buffer, 00736 IN OUT PLONG Length); 00737 00738 NTSTATUS 00739 AFSQueryPositionInfo( IN PIRP Irp, 00740 IN AFSFcb *Fcb, 00741 IN OUT PFILE_POSITION_INFORMATION Buffer, 00742 IN OUT PLONG Length); 00743 00744 NTSTATUS 00745 AFSQueryNameInfo( IN PIRP Irp, 00746 IN AFSDirectoryCB *DirectoryCB, 00747 IN OUT PFILE_NAME_INFORMATION Buffer, 00748 IN OUT PLONG Length); 00749 00750 NTSTATUS 00751 AFSQueryShortNameInfo( IN PIRP Irp, 00752 IN AFSDirectoryCB *DirectoryCB, 00753 IN OUT PFILE_NAME_INFORMATION Buffer, 00754 IN OUT PLONG Length); 00755 00756 NTSTATUS 00757 AFSQueryNetworkInfo( IN PIRP Irp, 00758 IN AFSDirectoryCB *DirectoryCB, 00759 IN OUT PFILE_NETWORK_OPEN_INFORMATION Buffer, 00760 IN OUT PLONG Length); 00761 00762 NTSTATUS 00763 AFSQueryStreamInfo( IN PIRP Irp, 00764 IN AFSDirectoryCB *DirectoryCB, 00765 IN OUT FILE_STREAM_INFORMATION *Buffer, 00766 IN OUT PLONG Length); 00767 00768 NTSTATUS 00769 AFSQueryAccess( IN PIRP Irp, 00770 IN AFSFcb *Fcb, 00771 IN OUT PFILE_ACCESS_INFORMATION Buffer, 00772 IN OUT PLONG Length); 00773 00774 NTSTATUS 00775 AFSQueryMode( IN PIRP Irp, 00776 IN AFSFcb *Fcb, 00777 IN OUT PFILE_MODE_INFORMATION Buffer, 00778 IN OUT PLONG Length); 00779 00780 NTSTATUS 00781 AFSQueryAlignment( IN PIRP Irp, 00782 IN AFSFcb *Fcb, 00783 IN OUT PFILE_ALIGNMENT_INFORMATION Buffer, 00784 IN OUT PLONG Length); 00785 00786 NTSTATUS 00787 AFSQueryAttribTagInfo( IN PIRP Irp, 00788 IN AFSDirectoryCB *DirectoryCB, 00789 IN OUT FILE_ATTRIBUTE_TAG_INFORMATION *Buffer, 00790 IN OUT PLONG Length); 00791 00792 NTSTATUS 00793 AFSQueryRemoteProtocolInfo( IN PIRP Irp, 00794 IN AFSDirectoryCB *DirectoryCB, 00795 IN OUT FILE_REMOTE_PROTOCOL_INFORMATION *Buffer, 00796 IN OUT PLONG Length); 00797 00798 NTSTATUS 00799 AFSQueryPhysicalNameInfo( IN PIRP Irp, 00800 IN AFSDirectoryCB *DirectoryCB, 00801 IN OUT PFILE_NETWORK_PHYSICAL_NAME_INFORMATION Buffer, 00802 IN OUT PLONG Length); 00803 00804 NTSTATUS 00805 AFSSetFileInfo( IN PDEVICE_OBJECT DeviceObject, 00806 IN PIRP Irp); 00807 00808 NTSTATUS 00809 AFSSetBasicInfo( IN PIRP Irp, 00810 IN AFSDirectoryCB *DirectoryCB); 00811 00812 NTSTATUS 00813 AFSSetDispositionInfo( IN PIRP Irp, 00814 IN AFSDirectoryCB *DirectoryCB); 00815 00816 NTSTATUS 00817 AFSSetRenameInfo( IN PIRP Irp); 00818 00819 NTSTATUS 00820 AFSSetPositionInfo( IN PIRP Irp, 00821 IN AFSDirectoryCB *DirectoryCB); 00822 00823 NTSTATUS 00824 AFSSetAllocationInfo( IN PIRP Irp, 00825 IN AFSDirectoryCB *DirectoryCB); 00826 00827 NTSTATUS 00828 AFSSetEndOfFileInfo( IN PIRP Irp, 00829 IN AFSDirectoryCB *DirectoryCB); 00830 00831 NTSTATUS 00832 AFSProcessShareSetInfo( IN IRP *Irp, 00833 IN AFSFcb *Fcb, 00834 IN AFSCcb *Ccb); 00835 00836 NTSTATUS 00837 AFSProcessShareQueryInfo( IN IRP *Irp, 00838 IN AFSFcb *Fcb, 00839 IN AFSCcb *Ccb); 00840 00841 NTSTATUS 00842 AFSProcessPIOCtlQueryInfo( IN IRP *Irp, 00843 IN AFSFcb *Fcb, 00844 IN AFSCcb *Ccb, 00845 IN OUT LONG *Length); 00846 00847 // 00848 // AFSEa.cpp Prototypes 00849 // 00850 00851 NTSTATUS 00852 AFSQueryEA( IN PDEVICE_OBJECT DeviceObject, 00853 IN PIRP Irp); 00854 00855 NTSTATUS 00856 AFSSetEA( IN PDEVICE_OBJECT DeviceObject, 00857 IN PIRP Irp); 00858 00859 // 00860 // AFSFlushBuffers.cpp Prototypes 00861 // 00862 00863 NTSTATUS 00864 AFSFlushBuffers( IN PDEVICE_OBJECT DeviceObject, 00865 IN PIRP Irp); 00866 00867 // 00868 // AFSVolumeInfo.cpp Prototypes 00869 // 00870 00871 NTSTATUS 00872 AFSQueryVolumeInfo( IN PDEVICE_OBJECT DeviceObject, 00873 IN PIRP Irp); 00874 00875 NTSTATUS 00876 AFSSetVolumeInfo( IN PDEVICE_OBJECT DeviceObject, 00877 IN PIRP Irp); 00878 00879 NTSTATUS 00880 AFSQueryFsVolumeInfo( IN AFSVolumeInfoCB *VolumeInfo, 00881 IN PFILE_FS_VOLUME_INFORMATION Buffer, 00882 IN OUT PULONG Length); 00883 00884 NTSTATUS 00885 AFSQueryFsSizeInfo( IN AFSVolumeInfoCB *VolumeInfo, 00886 IN PFILE_FS_SIZE_INFORMATION Buffer, 00887 IN OUT PULONG Length); 00888 00889 NTSTATUS 00890 AFSQueryFsDeviceInfo( IN AFSVolumeInfoCB *VolumeInfo, 00891 IN PFILE_FS_DEVICE_INFORMATION Buffer, 00892 IN OUT PULONG Length); 00893 00894 NTSTATUS 00895 AFSQueryFsAttributeInfo( IN AFSVolumeInfoCB *VolumeInfo, 00896 IN PFILE_FS_ATTRIBUTE_INFORMATION Buffer, 00897 IN OUT PULONG Length); 00898 00899 NTSTATUS 00900 AFSQueryFsFullSizeInfo( IN AFSVolumeInfoCB *VolumeInfo, 00901 IN PFILE_FS_FULL_SIZE_INFORMATION Buffer, 00902 IN OUT PULONG Length); 00903 00904 // 00905 // AFSDirControl.cpp Prototypes 00906 // 00907 00908 NTSTATUS 00909 AFSDirControl( IN PDEVICE_OBJECT DeviceObject, 00910 IN PIRP Irp); 00911 00912 NTSTATUS 00913 AFSQueryDirectory( IN PIRP Irp); 00914 00915 NTSTATUS 00916 AFSNotifyChangeDirectory( IN PIRP Irp); 00917 00918 AFSDirectoryCB * 00919 AFSLocateNextDirEntry( IN AFSObjectInfoCB *ObjectInfo, 00920 IN AFSCcb *Ccb); 00921 00922 AFSDirectoryCB * 00923 AFSLocateDirEntryByIndex( IN AFSObjectInfoCB *ObjectInfo, 00924 IN AFSCcb *Ccb, 00925 IN ULONG DirIndex); 00926 00927 NTSTATUS 00928 AFSSnapshotDirectory( IN AFSFcb *Fcb, 00929 IN AFSCcb *Ccb, 00930 IN BOOLEAN ResetIndex); 00931 00932 NTSTATUS 00933 AFSFsRtlNotifyFullChangeDirectory( IN AFSObjectInfoCB *ObjectInfo, 00934 IN AFSCcb *Context, 00935 IN BOOLEAN WatchTree, 00936 IN ULONG CompletionFilter, 00937 IN PIRP NotifyIrp); 00938 00939 void 00940 AFSFsRtlNotifyFullReportChange( IN AFSObjectInfoCB *ObjectInfo, 00941 IN AFSCcb *Ccb, 00942 IN ULONG NotifyFilter, 00943 IN ULONG NotificationAction); 00944 00945 BOOLEAN 00946 AFSNotifyReportChangeCallback( IN void *NotifyContext, 00947 IN void *FilterContext); 00948 00949 BOOLEAN 00950 AFSIsNameInSnapshot( IN AFSSnapshotHdr *SnapshotHdr, 00951 IN ULONG HashIndex); 00952 00953 // 00954 // AFSFSControl.cpp Prototypes 00955 // 00956 00957 NTSTATUS 00958 AFSFSControl( IN PDEVICE_OBJECT DeviceObject, 00959 IN PIRP Irp); 00960 00961 NTSTATUS 00962 AFSProcessUserFsRequest( IN PIRP Irp); 00963 00964 NTSTATUS 00965 AFSProcessShareFsCtrl( IN IRP *Irp, 00966 IN AFSFcb *Fcb, 00967 IN AFSCcb *Ccb); 00968 00969 // 00970 // AFSDevControl.cpp Prototypes 00971 // 00972 00973 NTSTATUS 00974 AFSDevControl( IN PDEVICE_OBJECT DeviceObject, 00975 IN PIRP Irp); 00976 00977 // 00978 // AFSInternalDevControl.cpp Prototypes 00979 // 00980 00981 NTSTATUS 00982 AFSInternalDevControl( IN PDEVICE_OBJECT DeviceObject, 00983 IN PIRP Irp); 00984 00985 // 00986 // AFSShutdown.cpp Prototypes 00987 // 00988 00989 NTSTATUS 00990 AFSShutdown( IN PDEVICE_OBJECT DeviceObject, 00991 IN PIRP Irp); 00992 00993 00994 NTSTATUS 00995 AFSShutdownFilesystem( void); 00996 00997 // 00998 // AFSLockControl.cpp Prototypes 00999 // 01000 01001 NTSTATUS 01002 AFSLockControl( IN PDEVICE_OBJECT DeviceObject, 01003 IN PIRP Irp); 01004 01005 // 01006 // AFSCleanup.cpp Prototypes 01007 // 01008 01009 NTSTATUS 01010 AFSCleanup( IN PDEVICE_OBJECT DeviceObject, 01011 IN PIRP Irp); 01012 01013 // 01014 // AFSSecurity.cpp Prototypes 01015 // 01016 01017 NTSTATUS 01018 AFSQuerySecurity( IN PDEVICE_OBJECT DeviceObject, 01019 IN PIRP Irp); 01020 01021 NTSTATUS 01022 AFSSetSecurity( IN PDEVICE_OBJECT DeviceObject, 01023 IN PIRP Irp); 01024 01025 // 01026 // AFSSystemControl.cpp Prototypes 01027 // 01028 01029 NTSTATUS 01030 AFSSystemControl( IN PDEVICE_OBJECT DeviceObject, 01031 IN PIRP Irp); 01032 01033 // 01034 // AFSQuota.cpp Prototypes 01035 // 01036 01037 NTSTATUS 01038 AFSQueryQuota( IN PDEVICE_OBJECT DeviceObject, 01039 IN PIRP Irp); 01040 01041 NTSTATUS 01042 AFSSetQuota( IN PDEVICE_OBJECT DeviceObject, 01043 IN PIRP Irp); 01044 01045 // 01046 // AFSGeneric.cpp Prototypes 01047 // 01048 01049 ULONG 01050 AFSExceptionFilter( IN CHAR *FunctionString, 01051 IN ULONG Code, 01052 IN PEXCEPTION_POINTERS ExceptPtrs); 01053 01054 BOOLEAN 01055 AFSAcquireExcl( IN PERESOURCE Resource, 01056 IN BOOLEAN wait); 01057 01058 BOOLEAN 01059 AFSAcquireSharedStarveExclusive( IN PERESOURCE Resource, 01060 IN BOOLEAN Wait); 01061 01062 BOOLEAN 01063 AFSAcquireShared( IN PERESOURCE Resource, 01064 IN BOOLEAN wait); 01065 01066 void 01067 AFSReleaseResource( IN PERESOURCE Resource); 01068 01069 void 01070 AFSConvertToShared( IN PERESOURCE Resource); 01071 01072 void 01073 AFSCompleteRequest( IN PIRP Irp, 01074 IN ULONG Status); 01075 01076 ULONG 01077 AFSGenerateCRC( IN PUNICODE_STRING FileName, 01078 IN BOOLEAN UpperCaseName); 01079 01080 void * 01081 AFSLockSystemBuffer( IN PIRP Irp, 01082 IN ULONG Length); 01083 01084 void * 01085 AFSLockUserBuffer( IN void *UserBuffer, 01086 IN ULONG BufferLength, 01087 OUT MDL ** Mdl); 01088 01089 void * 01090 AFSMapToService( IN PIRP Irp, 01091 IN ULONG ByteCount); 01092 01093 NTSTATUS 01094 AFSUnmapServiceMappedBuffer( IN void *MappedBuffer, 01095 IN PMDL Mdl); 01096 01097 NTSTATUS 01098 AFSInitializeLibraryDevice( void); 01099 01100 NTSTATUS 01101 AFSRemoveLibraryDevice( void); 01102 01103 NTSTATUS 01104 AFSDefaultDispatch( IN PDEVICE_OBJECT DeviceObject, 01105 IN PIRP Irp); 01106 01107 NTSTATUS 01108 AFSInitializeGlobalDirectoryEntries( void); 01109 01110 AFSDirectoryCB * 01111 AFSInitDirEntry( IN AFSObjectInfoCB *ParentObjectInfo, 01112 IN PUNICODE_STRING FileName, 01113 IN PUNICODE_STRING TargetName, 01114 IN AFSDirEnumEntry *DirEnumEntry, 01115 IN ULONG FileIndex); 01116 01117 BOOLEAN 01118 AFSCheckForReadOnlyAccess( IN ACCESS_MASK DesiredAccess, 01119 IN BOOLEAN DirectoryEntry); 01120 01121 NTSTATUS 01122 AFSEvaluateNode( IN GUID *AuthGroup, 01123 IN AFSDirectoryCB *DirEntry); 01124 01125 NTSTATUS 01126 AFSValidateSymLink( IN GUID *AuthGroup, 01127 IN AFSDirectoryCB *DirEntry); 01128 01129 NTSTATUS 01130 AFSInvalidateCache( IN AFSInvalidateCacheCB *InvalidateCB); 01131 01132 NTSTATUS 01133 AFSInvalidateObject( IN OUT AFSObjectInfoCB **ppObjectInfo, 01134 IN ULONG Reason); 01135 01136 BOOLEAN 01137 AFSIsChildOfParent( IN AFSFcb *Dcb, 01138 IN AFSFcb *Fcb); 01139 01140 inline 01141 ULONGLONG 01142 AFSCreateHighIndex( IN AFSFileID *FileID); 01143 01144 inline 01145 ULONGLONG 01146 AFSCreateLowIndex( IN AFSFileID *FileID); 01147 01148 BOOLEAN 01149 AFSCheckAccess( IN ACCESS_MASK DesiredAccess, 01150 IN ACCESS_MASK GrantedAccess, 01151 IN BOOLEAN DirectoryEntry); 01152 01153 NTSTATUS 01154 AFSGetDriverStatus( IN AFSDriverStatusRespCB *DriverStatus); 01155 01156 NTSTATUS 01157 AFSSubstituteSysName( IN UNICODE_STRING *ComponentName, 01158 IN UNICODE_STRING *SubstituteName, 01159 IN ULONG StringIndex); 01160 01161 NTSTATUS 01162 AFSSubstituteNameInPath( IN OUT UNICODE_STRING *FullPathName, 01163 IN OUT UNICODE_STRING *ComponentName, 01164 IN UNICODE_STRING *SubstituteName, 01165 IN OUT UNICODE_STRING *RemainingPath, 01166 IN BOOLEAN FreePathName); 01167 01168 NTSTATUS 01169 AFSInvalidateVolume( IN AFSVolumeCB *VolumeCB, 01170 IN ULONG Reason); 01171 01172 VOID 01173 AFSInvalidateAllVolumes( VOID); 01174 01175 NTSTATUS 01176 AFSVerifyEntry( IN GUID *AuthGroup, 01177 IN AFSDirectoryCB *DirectoryCB); 01178 01179 NTSTATUS 01180 AFSSetVolumeState( IN AFSVolumeStatusCB *VolumeStatus); 01181 01182 NTSTATUS 01183 AFSSetNetworkState( IN AFSNetworkStatusCB *NetworkStatus); 01184 01185 NTSTATUS 01186 AFSValidateDirectoryCache( IN AFSObjectInfoCB *ObjectInfo, 01187 IN GUID *AuthGroup); 01188 01189 BOOLEAN 01190 AFSIsVolumeFID( IN AFSFileID *FileID); 01191 01192 BOOLEAN 01193 AFSIsFinalNode( IN AFSFcb *Fcb); 01194 01195 NTSTATUS 01196 AFSUpdateMetaData( IN AFSDirectoryCB *DirEntry, 01197 IN AFSDirEnumEntry *DirEnumEntry); 01198 01199 NTSTATUS 01200 AFSValidateEntry( IN AFSDirectoryCB *DirEntry, 01201 IN GUID *AuthGroup, 01202 IN BOOLEAN FastCall); 01203 01204 AFSDirectoryCB * 01205 AFSGetSpecialShareNameEntry( IN UNICODE_STRING *ShareName, 01206 IN UNICODE_STRING *SecondaryName); 01207 01208 NTSTATUS 01209 AFSInitializeSpecialShareNameList( void); 01210 01211 void 01212 AFSWaitOnQueuedFlushes( IN AFSFcb *Fcb); 01213 01214 void 01215 AFSWaitOnQueuedReleases( void); 01216 01217 BOOLEAN 01218 AFSIsEqualFID( IN AFSFileID *FileId1, 01219 IN AFSFileID *FileId2); 01220 01221 NTSTATUS 01222 AFSResetDirectoryContent( IN AFSObjectInfoCB *ObjectInfoCB); 01223 01224 NTSTATUS 01225 AFSEnumerateGlobalRoot( IN GUID *AuthGroup); 01226 01227 BOOLEAN 01228 AFSIsRelativeName( IN UNICODE_STRING *Name); 01229 01230 void 01231 AFSUpdateName( IN UNICODE_STRING *Name); 01232 01233 NTSTATUS 01234 AFSUpdateTargetName( IN OUT UNICODE_STRING *TargetName, 01235 IN OUT ULONG *Flags, 01236 IN WCHAR *NameBuffer, 01237 IN USHORT NameLength); 01238 01239 AFSNameArrayHdr * 01240 AFSInitNameArray( IN AFSDirectoryCB *DirectoryCB, 01241 IN ULONG InitialElementCount); 01242 01243 NTSTATUS 01244 AFSPopulateNameArray( IN AFSNameArrayHdr *NameArray, 01245 IN UNICODE_STRING *Path, 01246 IN AFSDirectoryCB *DirectoryCB); 01247 01248 NTSTATUS 01249 AFSPopulateNameArrayFromRelatedArray( IN AFSNameArrayHdr *NameArray, 01250 IN AFSNameArrayHdr *RelatedNameArray, 01251 IN AFSDirectoryCB *DirectoryCB); 01252 01253 NTSTATUS 01254 AFSFreeNameArray( IN AFSNameArrayHdr *NameArray); 01255 01256 NTSTATUS 01257 AFSInsertNextElement( IN AFSNameArrayHdr *NameArray, 01258 IN AFSDirectoryCB *DirEntry); 01259 01260 AFSDirectoryCB * 01261 AFSBackupEntry( IN AFSNameArrayHdr *NameArray); 01262 01263 AFSDirectoryCB * 01264 AFSGetParentEntry( IN AFSNameArrayHdr *NameArray); 01265 01266 void 01267 AFSResetNameArray( IN AFSNameArrayHdr *NameArray, 01268 IN AFSDirectoryCB *DirEntry); 01269 01270 void 01271 AFSDumpNameArray( IN IN AFSNameArrayHdr *NameArray); 01272 01273 void 01274 AFSSetEnumerationEvent( IN AFSFcb *Fcb); 01275 01276 void 01277 AFSClearEnumerationEvent( IN AFSFcb *Fcb); 01278 01279 BOOLEAN 01280 AFSIsEnumerationInProcess( IN AFSObjectInfoCB *ObjectInfo); 01281 01282 NTSTATUS 01283 AFSVerifyVolume( IN ULONGLONG ProcessId, 01284 IN AFSVolumeCB *VolumeCB); 01285 01286 NTSTATUS 01287 AFSInitPIOCtlDirectoryCB( IN AFSObjectInfoCB *ObjectInfo); 01288 01289 NTSTATUS 01290 AFSRetrieveFileAttributes( IN AFSDirectoryCB *ParentDirectoryCB, 01291 IN AFSDirectoryCB *DirectoryCB, 01292 IN UNICODE_STRING *ParentPathName, 01293 IN AFSNameArrayHdr *RelatedNameArray, 01294 IN GUID *AuthGroup, 01295 OUT AFSFileInfoCB *FileInfo); 01296 01297 AFSObjectInfoCB * 01298 AFSAllocateObjectInfo( IN AFSObjectInfoCB *ParentObjectInfo, 01299 IN ULONGLONG HashIndex); 01300 01301 void 01302 AFSDeleteObjectInfo( IN AFSObjectInfoCB *ObjectInfo); 01303 01304 NTSTATUS 01305 AFSEvaluateRootEntry( IN AFSDirectoryCB *DirectoryCB, 01306 OUT AFSDirectoryCB **TargetDirEntry); 01307 01308 NTSTATUS 01309 AFSCleanupFcb( IN AFSFcb *Fcb, 01310 IN BOOLEAN ForceFlush); 01311 01312 NTSTATUS 01313 AFSUpdateDirEntryName( IN AFSDirectoryCB *DirectoryCB, 01314 IN UNICODE_STRING *NewFileName); 01315 01316 NTSTATUS 01317 AFSReadCacheFile( IN void *ReadBuffer, 01318 IN LARGE_INTEGER *ReadOffset, 01319 IN ULONG RequestedDataLength, 01320 IN OUT PULONG BytesRead); 01321 01322 NTSTATUS 01323 AFSIrpComplete( IN PDEVICE_OBJECT DeviceObject, 01324 IN PIRP Irp, 01325 IN PVOID Context); 01326 01327 BOOLEAN 01328 AFSIsDirectoryEmptyForDelete( IN AFSFcb *Fcb); 01329 01330 void 01331 AFSRemoveNameEntry( IN AFSObjectInfoCB *ParentObjectInfo, 01332 IN AFSDirectoryCB *DirEntry); 01333 01334 LARGE_INTEGER 01335 AFSGetAuthenticationId( void); 01336 01337 void 01338 AFSUnwindFileInfo( IN AFSFcb *Fcb, 01339 IN AFSCcb *Ccb); 01340 01341 BOOLEAN 01342 AFSValidateDirList( IN AFSObjectInfoCB *ObjectInfo); 01343 01344 PFILE_OBJECT 01345 AFSReferenceCacheFileObject( void); 01346 01347 void 01348 AFSReleaseCacheFileObject( IN PFILE_OBJECT CacheFileObject); 01349 01350 NTSTATUS 01351 AFSInitializeLibrary( IN AFSLibraryInitCB *LibraryInit); 01352 01353 NTSTATUS 01354 AFSCloseLibrary( void); 01355 01356 NTSTATUS 01357 AFSDefaultLogMsg( IN ULONG Subsystem, 01358 IN ULONG Level, 01359 IN PCCH Format, 01360 ...); 01361 01362 NTSTATUS 01363 AFSGetObjectStatus( IN AFSGetStatusInfoCB *GetStatusInfo, 01364 IN ULONG InputBufferLength, 01365 IN AFSStatusInfoCB *StatusInfo, 01366 OUT ULONG *ReturnLength); 01367 01368 NTSTATUS 01369 AFSCheckSymlinkAccess( IN AFSDirectoryCB *ParentDirectoryCB, 01370 IN UNICODE_STRING *ComponentName); 01371 01372 NTSTATUS 01373 AFSRetrieveFinalComponent( IN UNICODE_STRING *FullPathName, 01374 OUT UNICODE_STRING *ComponentName); 01375 01376 void 01377 AFSDumpTraceFiles_Default( void); 01378 01379 void * 01380 AFSLibExAllocatePoolWithTag( IN POOL_TYPE PoolType, 01381 IN SIZE_T NumberOfBytes, 01382 IN ULONG Tag); 01383 01384 BOOLEAN 01385 AFSValidNameFormat( IN UNICODE_STRING *FileName); 01386 01387 NTSTATUS 01388 AFSCreateDefaultSecurityDescriptor( void); 01389 01390 void 01391 AFSRetrieveParentPath( IN UNICODE_STRING *FullFileName, 01392 OUT UNICODE_STRING *ParentPath); 01393 01394 NTSTATUS 01395 AFSRetrieveValidAuthGroup( IN AFSFcb *Fcb, 01396 IN AFSObjectInfoCB *ObjectInfo, 01397 IN BOOLEAN WriteAccess, 01398 OUT GUID *AuthGroup); 01399 01400 NTSTATUS 01401 AFSPerformObjectInvalidate( IN AFSObjectInfoCB *ObjectInfo, 01402 IN ULONG InvalidateReason); 01403 01404 // 01405 // AFSWorker.cpp Prototypes 01406 // 01407 01408 NTSTATUS 01409 AFSInitializeWorkerPool( void); 01410 01411 NTSTATUS 01412 AFSRemoveWorkerPool( void); 01413 01414 NTSTATUS 01415 AFSInitWorkerThread( IN AFSWorkQueueContext *PoolContext, 01416 IN PKSTART_ROUTINE WorkerRoutine); 01417 01418 NTSTATUS 01419 AFSInitVolumeWorker( IN AFSVolumeCB *VolumeCB); 01420 01421 NTSTATUS 01422 AFSShutdownWorkerThread( IN AFSWorkQueueContext *PoolContext); 01423 01424 NTSTATUS 01425 AFSShutdownIOWorkerThread( IN AFSWorkQueueContext *PoolContext); 01426 01427 NTSTATUS 01428 AFSShutdownVolumeWorker( IN AFSVolumeCB *VolumeCB); 01429 01430 void 01431 AFSWorkerThread( IN PVOID Context); 01432 01433 void 01434 AFSIOWorkerThread( IN PVOID Context); 01435 01436 void 01437 AFSPrimaryVolumeWorkerThread( IN PVOID Context); 01438 01439 void 01440 AFSVolumeWorkerThread( IN PVOID Context); 01441 01442 NTSTATUS 01443 AFSInsertWorkitem( IN AFSWorkItem *WorkItem); 01444 01445 NTSTATUS 01446 AFSInsertIOWorkitem( IN AFSWorkItem *WorkItem); 01447 01448 NTSTATUS 01449 AFSInsertWorkitemAtHead( IN AFSWorkItem *WorkItem); 01450 01451 AFSWorkItem * 01452 AFSRemoveWorkItem( void); 01453 01454 AFSWorkItem * 01455 AFSRemoveIOWorkItem( void); 01456 01457 NTSTATUS 01458 AFSQueueWorkerRequest( IN AFSWorkItem *WorkItem); 01459 01460 NTSTATUS 01461 AFSQueueIOWorkerRequest( IN AFSWorkItem *WorkItem); 01462 01463 NTSTATUS 01464 AFSQueueWorkerRequestAtHead( IN AFSWorkItem *WorkItem); 01465 01466 NTSTATUS 01467 AFSShutdownVolumeWorker( IN AFSVolumeCB *VolumeCB); 01468 01469 NTSTATUS 01470 AFSQueueFlushExtents( IN AFSFcb *Fcb, 01471 IN GUID *AuthGroup); 01472 01473 NTSTATUS 01474 AFSQueueGlobalRootEnumeration( void); 01475 01476 NTSTATUS 01477 AFSQueuePurgeObject( IN AFSFcb *Fcb); 01478 01479 NTSTATUS 01480 AFSQueueStartIos( IN PFILE_OBJECT CacheFileObject, 01481 IN UCHAR FunctionCode, 01482 IN ULONG RequestFLags, 01483 IN AFSIoRun *IoRuns, 01484 IN ULONG RunCount, 01485 IN AFSGatherIo *GatherIo); 01486 01487 NTSTATUS 01488 AFSQueueInvalidateObject( IN AFSObjectInfoCB *ObjectInfo, 01489 IN ULONG InvalidateReason); 01490 01491 // 01492 // AFSMD5Support.cpp Prototypes 01493 // 01494 01495 void 01496 AFSGenerateMD5( IN char *DataBuffer, 01497 IN ULONG Length, 01498 OUT UCHAR *MD5Digest); 01499 01500 }; 01501 01502 #endif /* _AFS_COMMON_H */