| 237 | } |
| 238 | |
| 239 | VOID |
| 240 | Ext2FreeFcb (IN PEXT2_FCB Fcb) |
| 241 | { |
| 242 | PEXT2_VCB Vcb = Fcb->Vcb; |
| 243 | |
| 244 | __try { |
| 245 | |
| 246 | ASSERT((Fcb != NULL) && (Fcb->Identifier.Type == EXT2FCB) && |
| 247 | (Fcb->Identifier.Size == sizeof(EXT2_FCB))); |
| 248 | ASSERT(0 == Fcb->ReferenceCount); |
| 249 | |
| 250 | #ifndef _WIN2K_TARGET_ |
| 251 | FsRtlTeardownPerStreamContexts(&Fcb->Header); |
| 252 | #endif |
| 253 | |
| 254 | FsRtlUninitializeFileLock(&Fcb->FileLockAnchor); |
| 255 | FsRtlUninitializeOplock(&Fcb->Oplock); |
| 256 | ExDeleteResourceLite(&Fcb->MainResource); |
| 257 | ExDeleteResourceLite(&Fcb->PagingIoResource); |
| 258 | |
| 259 | Fcb->Identifier.Type = 0; |
| 260 | Fcb->Identifier.Size = 0; |
| 261 | |
| 262 | ExFreeToNPagedLookasideList(&(Ext2Global->Ext2FcbLookasideList), Fcb); |
| 263 | DEC_MEM_COUNT(PS_FCB, Fcb, sizeof(EXT2_FCB)); |
| 264 | |
| 265 | if (0 == Ext2DerefXcb(&Vcb->ReferenceCount)) { |
| 266 | if (!IsMounted(Vcb) || IsDispending(Vcb)) { |
| 267 | Ext2CheckDismount(NULL, Vcb, FALSE); |
| 268 | } |
| 269 | } |
| 270 | |
| 271 | } __finally { |
| 272 | } |
| 273 | } |
| 274 | |
| 275 | VOID |
| 276 | Ext2ReleaseFcb (IN PEXT2_FCB Fcb) |
no test coverage detected