#include "precomp.h"
+/* SEH support with PSEH */
+#include <pseh/pseh2.h>
+
#define NDEBUG
#include <debug.h>
KSPROPERTY_ITEM_IRP_STORAGE(Irp) = PropertyItem;
}
- /* call property handler */
- Status = PropertyHandler(Irp, Property, (OutputBufferLength > 0 ? Irp->AssociatedIrp.SystemBuffer : NULL));
+ _SEH2_TRY
+ {
+ /* call property handler */
+ Status = PropertyHandler(Irp, Property, (OutputBufferLength > 0 ? Irp->AssociatedIrp.SystemBuffer : NULL));
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ _SEH2_YIELD(return _SEH2_GetExceptionCode());
+ }
+ _SEH2_END;
if (Status == STATUS_BUFFER_TOO_SMALL)
{
/* no memory */
return STATUS_INSUFFICIENT_RESOURCES;
}
-
- /* re-call property handler */
- Status = PropertyHandler(Irp, Property, Irp->AssociatedIrp.SystemBuffer);
+ _SEH2_TRY
+ {
+ /* re-call property handler */
+ Status = PropertyHandler(Irp, Property, Irp->AssociatedIrp.SystemBuffer);
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = _SEH2_GetExceptionCode();
+ }
+ _SEH2_END;
}
}
}