| 833 | } |
| 834 | |
| 835 | NTSTATUS |
| 836 | Ext2CreateFile( |
| 837 | PEXT2_IRP_CONTEXT IrpContext, |
| 838 | PEXT2_VCB Vcb, |
| 839 | PBOOLEAN OpPostIrp |
| 840 | ) |
| 841 | { |
| 842 | NTSTATUS Status = STATUS_UNSUCCESSFUL; |
| 843 | PIO_STACK_LOCATION IrpSp; |
| 844 | PEXT2_FCB Fcb = NULL; |
| 845 | PEXT2_MCB Mcb = NULL; |
| 846 | PEXT2_MCB SymLink = NULL; |
| 847 | PEXT2_CCB Ccb = NULL; |
| 848 | |
| 849 | PEXT2_FCB ParentFcb = NULL; |
| 850 | PEXT2_MCB ParentMcb = NULL; |
| 851 | |
| 852 | UNICODE_STRING FileName; |
| 853 | PIRP Irp; |
| 854 | |
| 855 | ULONG Options; |
| 856 | ULONG CreateDisposition; |
| 857 | |
| 858 | BOOLEAN bParentFcbCreated = FALSE; |
| 859 | BOOLEAN bDir = FALSE; |
| 860 | BOOLEAN bFcbAllocated = FALSE; |
| 861 | BOOLEAN bCreated = FALSE; |
| 862 | |
| 863 | BOOLEAN bMainResourceAcquired = FALSE; |
| 864 | BOOLEAN bFcbLockAcquired = FALSE; |
| 865 | |
| 866 | BOOLEAN OpenDirectory; |
| 867 | BOOLEAN OpenTargetDirectory; |
| 868 | BOOLEAN CreateDirectory; |
| 869 | BOOLEAN SequentialOnly; |
| 870 | BOOLEAN NoIntermediateBuffering; |
| 871 | BOOLEAN IsPagingFile; |
| 872 | BOOLEAN DirectoryFile; |
| 873 | BOOLEAN NonDirectoryFile; |
| 874 | BOOLEAN NoEaKnowledge; |
| 875 | BOOLEAN DeleteOnClose; |
| 876 | BOOLEAN TemporaryFile; |
| 877 | BOOLEAN CaseSensitive; |
| 878 | BOOLEAN OpenReparsePoint; |
| 879 | |
| 880 | ACCESS_MASK DesiredAccess; |
| 881 | ULONG ShareAccess; |
| 882 | ULONG CcbFlags = 0; |
| 883 | |
| 884 | RtlZeroMemory(&FileName, sizeof(UNICODE_STRING)); |
| 885 | |
| 886 | Irp = IrpContext->Irp; |
| 887 | IrpSp = IoGetCurrentIrpStackLocation(Irp); |
| 888 | |
| 889 | Options = IrpSp->Parameters.Create.Options; |
| 890 | |
| 891 | DirectoryFile = IsFlagOn(Options, FILE_DIRECTORY_FILE); |
| 892 | OpenTargetDirectory = IsFlagOn(IrpSp->Flags, SL_OPEN_TARGET_DIRECTORY); |
no test coverage detected