MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / Ext2SetDispositionInfo

Function Ext2SetDispositionInfo

Ext4Fsd/fileinfo.c:1267–1308  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1265}
1266
1267NTSTATUS
1268Ext2SetDispositionInfo(
1269 PEXT2_IRP_CONTEXT IrpContext,
1270 PEXT2_VCB Vcb,
1271 PEXT2_FCB Fcb,
1272 PEXT2_CCB Ccb,
1273 BOOLEAN bDelete
1274)
1275{
1276 PIRP Irp = IrpContext->Irp;
1277 PIO_STACK_LOCATION IrpSp;
1278 NTSTATUS status = STATUS_SUCCESS;
1279 PEXT2_MCB Mcb = Fcb->Mcb;
1280
1281 IrpSp = IoGetCurrentIrpStackLocation(Irp);
1282
1283 DEBUG(DL_INF, ( "Ext2SetDispositionInfo: bDelete=%x\n", bDelete));
1284
1285 if (bDelete) {
1286
1287 DEBUG(DL_INF, ( "Ext2SetDispositionInformation: Removing %wZ.\n",
1288 &Mcb->FullName));
1289
1290 if (Ccb->SymLink || IsInodeSymLink(&Mcb->Inode)) {
1291 /* always allow deleting on symlinks */
1292 } else {
1293 status = Ext2IsFileRemovable(IrpContext, Vcb, Fcb, Ccb);
1294 }
1295
1296 if (NT_SUCCESS(status)) {
1297 SetLongFlag(Fcb->Flags, FCB_DELETE_PENDING);
1298 IrpSp->FileObject->DeletePending = TRUE;
1299 }
1300
1301 } else {
1302
1303 ClearLongFlag(Fcb->Flags, FCB_DELETE_PENDING);
1304 IrpSp->FileObject->DeletePending = FALSE;
1305 }
1306
1307 return status;
1308}
1309
1310NTSTATUS
1311Ext2SetRenameInfo(

Callers 1

Ext2SetFileInformationFunction · 0.85

Calls 1

Ext2IsFileRemovableFunction · 0.85

Tested by

no test coverage detected