IRQL raised for constructor/destructor under W10

I can’t believe it and it must be a bogus finding or side effect of something strange going on:

From my top of the stack KMDF EvtIoDeviceControl I instanciate a C++ class as a response of an application DeviceIoControl() via my own new() (which just calls ExAllocatePoolWithTag() from the non paged pool) and the constructors and destructors are called at APC_LEVEL since a recent W10 update. The EvtIoDeviceControl is called at PASSIVE_LEVEL as it should. Same code executes completely at PASSIVE_LEVEL under W7 and earlier under W10.

Did I take a wrong medication or can this really be true?

Thanks and cheers,
Hagen.

On 07-Nov-2015 16:03, xxxxx@dynax.at wrote:

Did I take a wrong medication or can this really be true?

https://pbs.twimg.com/media/CA2WwWCUUAAMvhH.jpg:large

Regards,
– pa

So you are saying you are running at PASSIVE_LEVEL and you call a version of new that you wrote, and then inside the constructor function you find you’re running at APC_LEVEL? Is that what you are saying? If this is what you are saying, why don’t you take the debugger, press that little assembly view button, and step from just before your call to new into you’re constructor function, it can’t be that many instructions.

Jan

On 11/7/15, 6:03 AM, “xxxxx@lists.osr.com on behalf of xxxxx@dynax.at” wrote:

>I can’t believe it and it must be a bogus finding or side effect of something strange going on:
>
>From my top of the stack KMDF EvtIoDeviceControl I instanciate a C++ class as a response of an application DeviceIoControl() via my own new() (which just calls ExAllocatePoolWithTag() from the non paged pool) and the constructors and destructors are called at APC_LEVEL since a recent W10 update. The EvtIoDeviceControl is called at PASSIVE_LEVEL as it should. Same code executes completely at PASSIVE_LEVEL under W7 and earlier under W10.
>

xxxxx@dynax.at wrote:

I can’t believe it and it must be a bogus finding or side effect of something strange going on:

From my top of the stack KMDF EvtIoDeviceControl I instanciate a C++ class as a response of an application DeviceIoControl() via my own new() (which just calls ExAllocatePoolWithTag() from the non paged pool) and the constructors and destructors are called at APC_LEVEL since a recent W10 update. The EvtIoDeviceControl is called at PASSIVE_LEVEL as it should. Same code executes completely at PASSIVE_LEVEL under W7 and earlier under W10.

How do you know this?


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.