- Call Property handler guarded in seh block 
- Needs to be done in portcls too
- 

svn path=/trunk/; revision=62285
This commit is contained in:
Johannes Anderwald 2014-02-22 09:53:25 +00:00
parent 5be1171389
commit 27787c5918

View file

@ -8,6 +8,9 @@
#include "precomp.h"
/* SEH support with PSEH */
#include <pseh/pseh2.h>
#define NDEBUG
#include <debug.h>
@ -280,8 +283,16 @@ KspPropertyHandler(
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)
{
@ -297,9 +308,16 @@ KspPropertyHandler(
/* 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;
}
}
}