Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186////////////////////////////////////////////////////////////////////// Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine// All rights reserved// This file was released under the GPLv2 on June 2015.////////////////////////////////////////////////////////////////////
#ifndef __UDF_PHYS_LIB__H__#define __UDF_PHYS_LIB__H__
#ifndef UDF_FORMAT_MEDIAextern BOOLEAN open_as_device;extern BOOLEAN opt_invalidate_volume;extern ULONG LockMode;#endif //UDF_FORMAT_MEDIA
extern NTSTATUS UDFSyncCache( IN PVCB Vcb );
OSSTATUS__fastcallUDFTIOVerify( IN void* _Vcb, IN void* Buffer, // Target buffer IN SIZE_T Length, IN uint32 LBA, OUT PSIZE_T IOBytes, IN uint32 Flags );
extern OSSTATUSUDFTWriteVerify( IN void* _Vcb, IN void* Buffer, // Target buffer IN SIZE_T Length, IN uint32 LBA, OUT PSIZE_T WrittenBytes, IN uint32 Flags );
extern OSSTATUSUDFTReadVerify( IN void* _Vcb, IN void* Buffer, // Target buffer IN SIZE_T Length, IN uint32 LBA, OUT PSIZE_T ReadBytes, IN uint32 Flags );
extern OSSTATUS UDFTRead(PVOID _Vcb, PVOID Buffer, // Target buffer SIZE_T Length, ULONG LBA, PSIZE_T ReadBytes, ULONG Flags = 0);
extern OSSTATUS UDFTWrite(IN PVOID _Vcb, IN PVOID Buffer, // Target buffer IN SIZE_T Length, IN ULONG LBA, OUT PSIZE_T WrittenBytes, IN ULONG Flags = 0);
#define PH_TMP_BUFFER 1#define PH_VCB_IN_RETLEN 2#define PH_LOCK_CACHE 0x10000000
#define PH_EX_WRITE 0x80000000#define PH_IO_LOCKED 0x20000000
externOSSTATUSUDFDoOPC( IN PVCB Vcb );
extern OSSTATUS UDFPrepareForWriteOperation( IN PVCB Vcb, IN ULONG Lba, IN ULONG BCount);
extern OSSTATUS UDFReadDiscTrackInfo(PDEVICE_OBJECT DeviceObject, // the target device object PVCB Vcb); // Volume Control Block for ^ DevObj
extern OSSTATUS UDFReadAndProcessFullToc(PDEVICE_OBJECT DeviceObject, // the target device object PVCB Vcb);
extern OSSTATUS UDFUseStandard(PDEVICE_OBJECT DeviceObject, // the target device object PVCB Vcb); // Volume control block fro this DevObj
extern OSSTATUS UDFGetBlockSize(PDEVICE_OBJECT DeviceObject, // the target device object PVCB Vcb); // Volume control block fro this DevObj
extern OSSTATUS UDFGetDiskInfo(IN PDEVICE_OBJECT DeviceObject, // the target device object IN PVCB Vcb); // Volume control block from this DevObj
extern VOID NTAPI UDFEjectReqWaiter(IN PVOID Context);
extern VOID UDFStopEjectWaiter(PVCB Vcb);
extern OSSTATUS UDFPrepareForReadOperation(IN PVCB Vcb, IN uint32 Lba, IN uint32 BCount );//#define UDFPrepareForReadOperation(a,b) (STATUS_SUCCESS)
extern VOID UDFUpdateNWA(PVCB Vcb, ULONG LBA, ULONG BCount, OSSTATUS RC);
extern OSSTATUS UDFDoDismountSequence(IN PVCB Vcb, IN PPREVENT_MEDIA_REMOVAL_USER_IN Buf, IN BOOLEAN Eject);
// read physical sectors/*OSSTATUS UDFReadSectors(IN PVCB Vcb, IN BOOLEAN Translate,// Translate Logical to Physical IN ULONG Lba, IN ULONG BCount, IN BOOLEAN Direct, OUT PCHAR Buffer, OUT PULONG ReadBytes);*/#define UDFReadSectors(Vcb, Translate, Lba, BCount, Direct, Buffer, ReadBytes) \ (( WCacheIsInitialized__(&((Vcb)->FastCache)) && (KeGetCurrentIrql() < DISPATCH_LEVEL)) ? \ (WCacheReadBlocks__(&((Vcb)->FastCache), Vcb, Buffer, Lba, BCount, ReadBytes, Direct)) : \ (UDFTRead(Vcb, Buffer, ((SIZE_T)(BCount))<<((Vcb)->BlockSizeBits), Lba, ReadBytes, 0)))
// read data inside physical sectorextern OSSTATUS UDFReadInSector(IN PVCB Vcb, IN BOOLEAN Translate, // Translate Logical to Physical IN ULONG Lba, IN ULONG i, // offset in sector IN ULONG l, // transfer length IN BOOLEAN Direct, OUT PCHAR Buffer, OUT PSIZE_T ReadBytes);// read unaligned dataextern OSSTATUS UDFReadData(IN PVCB Vcb, IN BOOLEAN Translate, // Translate Logical to Physical IN LONGLONG Offset, IN ULONG Length, IN BOOLEAN Direct, OUT PCHAR Buffer, OUT PSIZE_T ReadBytes);
#ifndef UDF_READ_ONLY_BUILD// write physical sectorsOSSTATUS UDFWriteSectors(IN PVCB Vcb, IN BOOLEAN Translate, // Translate Logical to Physical IN ULONG Lba, IN ULONG WBCount, IN BOOLEAN Direct, // setting this flag delays flushing of given // data to indefinite term IN PCHAR Buffer, OUT PSIZE_T WrittenBytes);// write directly to cached sectorOSSTATUS UDFWriteInSector(IN PVCB Vcb, IN BOOLEAN Translate, // Translate Logical to Physical IN ULONG Lba, IN ULONG i, // offset in sector IN ULONG l, // transfer length IN BOOLEAN Direct, OUT PCHAR Buffer, OUT PSIZE_T WrittenBytes);// write data at unaligned offset & lengthOSSTATUS UDFWriteData(IN PVCB Vcb, IN BOOLEAN Translate, // Translate Logical to Physical IN LONGLONG Offset, IN SIZE_T Length, IN BOOLEAN Direct, // setting this flag delays flushing of given // data to indefinite term IN PCHAR Buffer, OUT PSIZE_T WrittenBytes);#endif //UDF_READ_ONLY_BUILD
OSSTATUS UDFResetDeviceDriver(IN PVCB Vcb, IN PDEVICE_OBJECT TargetDeviceObject, IN BOOLEAN Unlock);
#endif //__UDF_PHYS_LIB__H__