[PSEH] Use native SEH on clang-cl x64

This commit is contained in:
Timo Kreuzer 2024-11-29 09:59:48 +02:00
parent 478317abcb
commit 96676ca251
2 changed files with 11 additions and 10 deletions

View file

@ -2356,7 +2356,7 @@ Return Value:
if ((CreateDisposition != FILE_OPEN) &&
(CreateDisposition != FILE_OPEN_IF)) {
try_return( Iosb.Status = STATUS_ACCESS_DENIED );
try_return( Status = STATUS_ACCESS_DENIED );
}
//
@ -2389,7 +2389,7 @@ Return Value:
if (!FlagOn(ShareAccess, FILE_SHARE_READ) &&
!FatIsHandleCountZero( IrpContext, Vcb )) {
try_return( Iosb.Status = STATUS_SHARING_VIOLATION );
try_return( Status = STATUS_SHARING_VIOLATION );
}
//
@ -2412,14 +2412,14 @@ Return Value:
if (Vcb->OpenFileCount != 0) {
try_return( Iosb.Status = STATUS_SHARING_VIOLATION );
try_return( Status = STATUS_SHARING_VIOLATION );
}
} else {
if (Vcb->ReadOnlyCount != Vcb->OpenFileCount) {
try_return( Iosb.Status = STATUS_SHARING_VIOLATION );
try_return( Status = STATUS_SHARING_VIOLATION );
}
}
@ -2487,13 +2487,13 @@ Return Value:
if (Vcb->DirectAccessOpenCount > 0) {
if (!NT_SUCCESS(Iosb.Status = IoCheckShareAccess( *DesiredAccess,
if (!NT_SUCCESS(Status = IoCheckShareAccess( *DesiredAccess,
ShareAccess,
FileObject,
&Vcb->ShareAccess,
TRUE ))) {
try_return( Iosb.Status );
try_return( NOTHING );
}
} else {
@ -2546,7 +2546,7 @@ Return Value:
// And set our status to success
//
Iosb.Status = STATUS_SUCCESS;
Status = STATUS_SUCCESS;
Iosb.Information = FILE_OPENED;
try_exit: NOTHING;
@ -2558,7 +2558,7 @@ Return Value:
// If this is an abnormal termination then undo our work
//
if (_SEH2_AbnormalTermination() || !NT_SUCCESS(Iosb.Status)) {
if (_SEH2_AbnormalTermination() || !NT_SUCCESS(Status)) {
if (UnwindCounts) {
Vcb->DirectAccessOpenCount -= 1;
@ -2570,9 +2570,10 @@ Return Value:
if (UnwindVolumeLock) { Vcb->VcbState &= ~VCB_STATE_FLAG_LOCKED; }
}
DebugTrace(-1, Dbg, "FatOpenVolume -> Iosb.Status = %08lx\n", Iosb.Status);
DebugTrace(-1, Dbg, "FatOpenVolume -> Iosb.Status = %08lx\n", Status);
} _SEH2_END;
Iosb.Status = Status;
return Iosb;
}

View file

@ -25,7 +25,7 @@
#define __USE_PSEH2__
#if defined(_USE_NATIVE_SEH) || (defined(_MSC_VER) && !(defined(__clang__) && defined(_M_AMD64)))
#if defined(_USE_NATIVE_SEH) || defined(_MSC_VER)
#define _SEH2_TRY __try
#define _SEH2_FINALLY __finally