{
return STATUS_PRIVILEGE_NOT_HELD;
}
+
+ _SEH2_TRY
+ {
+ ProbeForWriteUlong(Buffer);
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ _SEH2_YIELD(return _SEH2_GetExceptionCode());
+ }
+ _SEH2_END;
}
Status = MmSessionCreate(&SessionId);
- if (NT_SUCCESS(Status)) *(PULONG)Buffer = SessionId;
+ if (NT_SUCCESS(Status))
+ {
+ _SEH2_TRY
+ {
+ *(PULONG)Buffer = SessionId;
+ }
+ _SEH2_EXCEPT(ExSystemExceptionFilter())
+ {
+ Status = _SEH2_GetExceptionCode();
+ }
+ _SEH2_END;
+ }
return Status;
}
{
return STATUS_PRIVILEGE_NOT_HELD;
}
- }
- SessionId = *(PULONG)Buffer;
+ _SEH2_TRY
+ {
+ SessionId = ProbeForReadUlong(Buffer);
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ _SEH2_YIELD(return _SEH2_GetExceptionCode());
+ }
+ _SEH2_END;
+ }
+ else
+ {
+ SessionId = *(PULONG)Buffer;
+ }
return MmSessionDelete(SessionId);
}