20#define UDF_BUG_CHECK_ID UDF_FILE_UDF_INFO_ALLOC
23 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
24 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
25 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
26 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
27 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
28 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
29 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
30 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
32 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
33 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
34 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
35 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
36 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
37 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
38 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
39 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
53#if defined (_X86_) && defined (_MSC_VER) && !defined(__clang__)
73 mov ecx,[ecx]
Vcb.LB2B_Bits
100 for(
i=PartNum;
i<
Vcb->PartitionMaps;
i++,
pm++) {
101 if(
pm->PartitionNum == PartNum)
103 return (Addr -
pm->PartitionRoot) >>
Vcb->LB2B_Bits;
120 if(Addr->partitionReferenceNum >=
Vcb->PartitionMaps) {
121 AdPrint((
"UDFPartLbaToPhys: part %x, lbn %x (err)\n",
122 Addr->partitionReferenceNum, Addr->logicalBlockNum));
123 if(
Vcb->PartitionMaps &&
125 AdPrint((
"UDFPartLbaToPhys: try to recover: part %x -> %x\n",
126 Addr->partitionReferenceNum,
Vcb->PartitionMaps-1));
127 Addr->partitionReferenceNum = (
USHORT)(
Vcb->PartitionMaps-1);
134 for(
i=Addr->partitionReferenceNum; i<Vcb->PartitionMaps;
i++) {
135 if(
Vcb->Partitions[
i].PartitionNum == Addr->partitionReferenceNum) {
136 a =
Vcb->Partitions[
i].PartitionRoot +
137 (Addr->logicalBlockNum <<
Vcb->LB2B_Bits);
138 if(
a >
Vcb->LastPossibleLBA) {
139 AdPrint((
"UDFPartLbaToPhys: root %x, lbn %x, lba %x (err1)\n",
140 Vcb->Partitions[
i].PartitionRoot, Addr->logicalBlockNum,
a));
147 a =
Vcb->Partitions[
i-1].PartitionRoot +
148 (Addr->logicalBlockNum <<
Vcb->LB2B_Bits);
149 if(
a >
Vcb->LastPossibleLBA) {
150 AdPrint((
"UDFPartLbaToPhys: i %x, root %x, lbn %x, lba %x (err2)\n",
151 i,
Vcb->Partitions[
i-1].PartitionRoot, Addr->logicalBlockNum,
a));
209 for(;
i!=0xffffffff;
i--,
pm--) {
210 if( ((
root =
pm->PartitionRoot) <= Lba) &&
211 ((
root +
pm->PartitionLen) > Lba) )
return (
uint16)
pm->PartitionNum;
228 if(PartNum == (
uint32)-1)
return 0;
229 if(PartNum == (
uint32)-2)
return Vcb->Partitions[0].PartitionRoot;
230 for(
i=PartNum;
i<
Vcb->PartitionMaps;
i++) {
231 if(
Vcb->Partitions[
i].PartitionNum == PartNum)
return Vcb->Partitions[
i].PartitionRoot;
248 if(PartNum == (
uint32)-1)
return Vcb->LastLBA;
249 if(PartNum == (
uint32)-2) PartNum =
Vcb->PartitionMaps-1;
250 for(
i=PartNum;
i<
Vcb->PartitionMaps;
i++) {
251 if(
Vcb->Partitions[
i].PartitionNum == PartNum)
252 return (
Vcb->Partitions[
i].PartitionRoot +
253 Vcb->Partitions[
i].PartitionLen);
255 return (
Vcb->Partitions[
i-1].PartitionRoot +
256 Vcb->Partitions[
i-1].PartitionLen);
309 if(PartNum == (
uint32)-1)
return Vcb->LastLBA;
310 for(
i=PartNum;
i<
Vcb->PartitionMaps;
i++) {
311 if(
Vcb->Partitions[
i].PartitionNum == PartNum)
312 return Vcb->Partitions[
i].PartitionLen;
314 return (
Vcb->Partitions[
i-1].PartitionRoot +
315 Vcb->Partitions[
i-1].PartitionLen);
324#if defined (_X86_) && defined (_MSC_VER)
515 ASSERT((bit == 0) || (bit == 1));
523 while(
j < ((
i<Lim) ? 32 : lLim) ) {
536 if((bit && (
a==0xffffffff)) ||
550#ifndef UDF_READ_ONLY_BUILD
584 i = (1<<
Vcb->LB2B_Bits)-1;
605 if(!best_len || (best_len >
len)) {
620 if(
Vcb->CDR_Mode)
break;
626 if(!best_len &&
align) {
632 (*MaxExtLen) = best_len;
636 (*MaxExtLen) = max_len;
641#ifdef UDF_CHECK_DISK_ALLOCATION
646UDFCheckSpaceAllocation_(
650#ifdef UDF_TRACK_ONDISK_ALLOCATION
664 BSh =
Vcb->BlockSizeBits;
668#ifdef UDF_TRACK_ONDISK_ALLOCATION
669 AdPrint((
"ChkAlloc:Map:%x:File:%x:Line:%d\n",
677#ifdef UDF_TRACK_ONDISK_ALLOCATION
678 AdPrint((
"ChkAlloc:%x:%s:%x:@:%x:(%x):File:%x:Line:%d\n",
683 (Map[
i].extLength >> 30),
705#ifdef UDF_CHECK_EXTENT_SIZE_ALIGNMENT
709 lba = Map[
i].extLocation;
712 if(
lba >
Vcb->LastPossibleLBA) {
725 if(
lba+
j >
Vcb->LastPossibleLBA) {
727 AdPrint((
"USED Mapping covers block(s) beyond media @%x\n",
lba+
j));
732 AdPrint((
"USED Mapping covers FREE block(s) @%x\n",
lba+
j));
741 if(
lba+
j >
Vcb->LastPossibleLBA) {
743 AdPrint((
"USED Mapping covers block(s) beyond media @%x\n",
lba+
j));
748 AdPrint((
"FREE Mapping covers USED block(s) @%x\n",
lba+
j));
768#define BIT_C (sizeof(Vcb->BSBM_Bitmap[0])*8)
770 if(
Vcb->BSBM_Bitmap) {
772 Vcb->FSBM_Bitmap[
j] &= ~Vcb->BSBM_Bitmap[
j];
786#ifdef UDF_TRACK_ONDISK_ALLOCATION
797#ifdef UDF_TRACK_ONDISK_ALLOCATION
806 BSh =
Vcb->BlockSizeBits;
818#ifdef UDF_TRACK_ONDISK_ALLOCATION
819 AdPrint((
"Alloc:%x:%s:%x:@:%x:File:%x:Line:%d\n",
821 asUsed ? ((asXXX &
AS_BAD) ?
"B" :
"U") :
"F",
830#ifdef UDF_CHECK_EXTENT_SIZE_ALIGNMENT
838 lba = Map[
i].extLocation;
841 if(
lba >
Vcb->LastPossibleLBA) {
849#ifdef UDF_TRACK_ONDISK_ALLOCATION
862#ifdef UDF_TRACK_ONDISK_ALLOCATION
884#ifdef UDF_TRACK_ONDISK_ALLOCATION
910 Map[
i].extLocation = 0;
913#ifdef UDF_TRACK_ONDISK_ALLOCATION
932#ifdef UDF_TRACK_ONDISK_ALLOCATION
940 if(!Map[0].extLength) {
942 ASSERT(!Map[0].extLocation);
948#ifdef UDF_TRACK_ONDISK_ALLOCATION
957#ifndef UDF_READ_ONLY_BUILD
970#ifdef UDF_TRACK_ALLOC_FREE_EXTENT
980 LBS =
Vcb->LBlockSize;
981 BSh =
Vcb->BlockSizeBits;
983 ExtInfo->Mapping =
NULL;
991 goto no_free_space_err;
997 SearchLim, &
len, AllocFlags);
1002 Ext.extLength = blen<<BSh;
1007 Ext.extLength =
len<<BSh;
1012 if(ExtInfo->Mapping) {
1015 ExtInfo->Mapping =
NULL;
1018 ExtInfo->Length = 0;
1031 AdPrint((
"newly allocated extent contains BB\n"));
1035 blen +=
Ext.extLength>>BSh;
1041 if(!(ExtInfo->Mapping)) {
1043#ifdef UDF_TRACK_ALLOC_FREE_EXTENT
1048 if(!ExtInfo->Mapping) {
1051 ExtInfo->Length = 0;
1068 if(!ExtInfo->Mapping) {
1071 ExtInfo->Length = 0;
1076 ExtInfo->Length =
Length;
1113 if(!
Vcb->CDR_Mode &&
1115 for(
i=0;
i<
Vcb->PartitionMaps;
i++) {
1130 return s >>
Vcb->LB2B_Bits;
1146 s=
Vcb->LastPossibleLBA;
1147 }
else if(!
Vcb->CDR_Mode) {
1148 for(
i=0;
i<
Vcb->PartitionMaps;
i++) {
1149 s+=
Vcb->Partitions[
i].PartitionLen;
1153 s=
Vcb->LastPossibleLBA -
Vcb->Partitions[0].PartitionRoot;
1155 return s >>
Vcb->LB2B_Bits;
1174 if((bm = (
uint32*)(((
PVCB)_Vcb)->FSBM_Bitmap)))
1177 if((bm = (
uint32*)(((
PVCB)_Vcb)->ZSBM_Bitmap)))
1199#pragma warning(disable:4035)
1234 return ((
BOOLEAN)(((((
uint32*)(arr))[(bit)>>5]) >> ((bit)&31)) &1));
1272 (((
uint32*)(arr))[(bit)>>5]) |= (((
uint32)1) << ((bit)&31));
1283#if defined(_MSC_VER) && !defined(__clang__)
1306 jnz
short sb_loop_cont
1309 jb
short sb_loop_cont
1327 jnz
short sb_loop_cont
1380 (((
uint32*)(arr))[(bit)>>5]) &= (~(((
uint32)1) << ((bit)&31)));
1391#if defined(_MSC_VER) && !defined(__clang__)
1414 jnz
short cp_loop_cont
1417 jb
short cp_loop_cont
1435 jnz
short cp_loop_cont
1455#pragma warning(default:4035)
ios_base &_STLP_CALL dec(ios_base &__s)
uint32 __fastcall UDFPartEnd(PVCB Vcb, uint32 PartNum)
uint32 __fastcall UDFPartLen(PVCB Vcb, uint32 PartNum)
SIZE_T UDFFindMinSuitableExtent(IN PVCB Vcb, IN uint32 Length, IN uint32 SearchStart, IN uint32 SearchLim, OUT uint32 *MaxExtLen, IN uint8 AllocFlags)
static const int8 bit_count_tab[]
int64 __fastcall UDFGetTotalSpace(IN PVCB Vcb)
uint32 __fastcall UDFGetPartFreeSpace(IN PVCB Vcb, IN uint32 partNum)
uint32 __fastcall UDFPartStart(PVCB Vcb, uint32 PartNum)
int64 __fastcall UDFGetFreeSpace(IN PVCB Vcb)
OSSTATUS UDFAllocFreeExtent_(IN PVCB Vcb, IN int64 Length, IN uint32 SearchStart, IN uint32 SearchLim, OUT PEXTENT_INFO ExtInfo, IN uint8 AllocFlags)
void UDFMarkSpaceAsXXXNoProtect_(IN PVCB Vcb, IN PEXTENT_MAP Map, IN uint32 asXXX)
void UDFMarkSpaceAsXXX_(IN PVCB Vcb, IN PEXTENT_MAP Map, IN uint32 asXXX)
void UDFMarkBadSpaceAsUsed(IN PVCB Vcb, IN lba_t lba, IN ULONG len)
uint32 UDFPhysLbaToPart(IN PVCB Vcb, IN uint32 PartNum, IN uint32 Addr)
uint32 UDFIsBlockAllocated(IN void *_Vcb, IN uint32 Lba)
uint32 __fastcall UDFGetPartNumByPhysLba(IN PVCB Vcb, IN uint32 Lba)
SIZE_T __stdcall UDFGetBitmapLen(uint32 *Bitmap, SIZE_T Offs, SIZE_T Lim)
uint32 __fastcall UDFPartLbaToPhys(IN PVCB Vcb, IN lb_addr *Addr)
static void xor(unsigned char *dst, const unsigned char *a, const unsigned char *b, const int count)
int align(int length, int align)
#define EXTENT_NOT_RECORDED_ALLOCATED
#define EXTENT_NOT_RECORDED_NOT_ALLOCATED
#define UDFReleaseResource(Resource)
#define UDFAcquireResourceShared(Resource, CanWait)
#define UDFAcquireResourceExclusive(Resource, CanWait)
int64 UDFGetExtentLength(IN PEXTENT_MAP Extent)
PEXTENT_MAP __fastcall UDFExtentToMapping_(IN PEXTENT_AD Extent)
PEXTENT_MAP __fastcall UDFMergeMappings(IN PEXTENT_MAP Extent, IN PEXTENT_MAP Extent2)
GLboolean GLboolean GLboolean GLboolean a
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
VOID UDFSetModified(IN PVCB Vcb)
static struct proto Ext[]
#define cmp(status, error)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define UDF_VAT_FREE_ENTRY
#define UDF_EXTENT_LENGTH_MASK
OSSTATUS __fastcall UDFUnmapRange(IN PVCB Vcb, IN uint32 Lba, IN uint32 BCount)
BOOLEAN __fastcall UDFCheckArea(IN PVCB Vcb, IN lba_t LBA, IN uint32 BCount)
static calc_node_t * pop(void)
static void push(calc_node_t *op)
uint16 partitionReferenceNum
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl ebx
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx testl eax jnz xchgl ecx incl TEMP esp ecx subl ebx pushl ecx ecx edx ecx shrl ecx mm0 mm4 mm0 mm4 mm1 mm5 mm1 mm5 mm2 mm6 mm2 mm6 mm3 mm7 mm3 mm7 paddd mm0 paddd mm4 paddd mm0 paddd mm4 paddd mm0 paddd mm4 movq mm1 movq mm5 psrlq mm1 psrlq mm5 paddd mm0 paddd mm4 psrad mm0 psrad mm4 packssdw mm0 packssdw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz popl ecx andl ecx jecxz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 psrlq mm1 paddd mm0 psrad mm0 packssdw mm0 movd eax movw edi esi edx edi
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl eax
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx testl eax jnz xchgl ecx incl TEMP esi
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx testl eax jnz xchgl ecx incl TEMP esp ecx subl ebx pushl ecx ecx edx ecx shrl ecx mm0 mm4 mm0 mm4 mm1 mm5 mm1 mm5 mm2 mm6 mm2 mm6 mm3 mm7 mm3 mm7 paddd mm0 paddd mm4 paddd mm0 paddd mm4 paddd mm0 paddd mm4 movq mm1 movq mm5 psrlq mm1 psrlq mm5 paddd mm0 paddd mm4 psrad mm0 psrad mm4 packssdw mm0 packssdw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz popl ecx andl ecx jecxz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 psrlq mm1 paddd mm0 psrad mm0 packssdw mm0 movd eax movw edi esi edx esi movl ecx mm0 mm4 mm0 mm4 mm1 mm5 mm1 mm5 mm2 mm6 mm2 mm6 mm3 mm7 mm3 mm7 paddd mm0 paddd mm4 paddd mm0 paddd mm4 paddd mm0 paddd mm4 movq mm1 movq mm5 psrlq mm1 psrlq mm5 paddd mm1 paddd mm5 psrad mm1 psrad mm5 packssdw mm1 packssdw mm5 psubd mm0 psubd mm4 psubsw mm0 psubsw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi subl esi addl edx edi decl ecx jnz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 psrlq mm1 paddd mm1 psrad mm1 packssdw mm1 psubd mm0 psubsw mm0 movd eax movw edi emms popl ebx popl esi popl edi mov ebp
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx
#define UDF_VCB_ASSUME_ALL_USED
#define UDF_VCB_FLAGS_RAW_DISK
#define UDF_VCB_IC_INSTANT_COMPAT_ALLOC_DESCS
#define UDFCheckFreeBitOwner(Vcb, i)
#define UDFGetUsedBit(arr, bit)
#define UDFCheckUsedBitOwner(Vcb, i, o)
#define UDFMarkSpaceAsXXXNoProtect(Vcb, FileInfo, Map, asXXX)
#define UDFSetBits(arr, bit, bc)
#define UDFGetBit(arr, bit)
#define UDFSetZeroBits(arr, bit, bc)
#define UDFExtentToMapping(e)
#define UDFSetBit(arr, bit)
#define UDFGetZeroBit(arr, bit)
#define UDFSetFreeBits(arr, bit, bc)
#define UDFGetFreeBit(arr, bit)
#define UDFSetUsedBits(arr, bit, bc)
#define UDFClrBit(arr, bit)
#define EXTENT_FLAG_VERIFY
#define UDF_MAX_EXTENT_LENGTH
#define LBA_OUT_OF_EXTENT
#define EXTENT_FLAG_ALLOC_SEQUENTIAL
#define STATUS_INSUFFICIENT_RESOURCES
#define UDF_CHECK_BITMAP_RESOURCE(Vcb)
VOID WCacheDiscardBlocks__(IN PW_CACHE Cache, IN PVOID Context, IN lba_t ReqLba, IN ULONG BCount)
#define WCACHE_BLOCK_USED
#define WCACHE_BLOCK_ZERO