Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results
The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
Upcoming OSR Seminars | ||
---|---|---|
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead! | ||
Internals & Software Drivers | 7 February 2022 | Live, Online |
Kernel Debugging | 21 March 2022 | Live, Online |
Developing Minifilters | 23 May 2022 | Live, Online |
Writing WDF Drivers | 12 September 2022 | Live, Online |
Comments
> from one thread before resource is released with
> ExReleaseResourceForThreadLite?
AFAIK yes - and you will need to release it twice too.
Max
> > Can be ExAcquireResourceExclusiveLite called two (or more) times
> > from one thread before resource is released with
> > ExReleaseResourceForThreadLite?
>
> AFAIK yes - and you will need to release it twice too.
O.K. it's exactly what I need.
BTW:
1) IOCTL call
2) acquire mutex via KeWaitForMutexObject
3) return from IOCTL
4) BSOD
Anybody know why?
Petr
Petr Balas (petr at petrbalas dot cz)
> 1) IOCTL call
> 2) acquire mutex via KeWaitForMutexObject
> 3) return from IOCTL
> 4) BSOD
>
> Anybody know why?
You must release mutex before returning to user mode. Use mutants if you
do not want this behaviour.
Max
> > BTW:
> > 1) IOCTL call
> > 2) acquire mutex via KeWaitForMutexObject
> > 3) return from IOCTL
> > 4) BSOD
> >
> > Anybody know why?
>
> You must release mutex before returning to user mode. Use mutants if you
> do not want this behaviour.
How to create mutant from kernel mode?
Can mutants be acquired recursivelly?
Petr
There is an undocumented NtCreateMutant call, but it's better to use
CreateMutex from user mode.
> Can mutants be acquired recursivelly?
Yes. This is what called "mutex" in user-mode Win32.
Max
> > How to create mutant from kernel mode?
>
> There is an undocumented NtCreateMutant call, but it's better to use
> CreateMutex from user mode.
Hmmmm.
> > Can mutants be acquired recursivelly?
>
> Yes. This is what called "mutex" in user-mode Win32.
O.K.
But at this moment I prefer to stay with resources:
Create:
ExInitializeResourceLite(&SerializeAccessResource);
Delete:
ExDeleteResourceLite(&SerializeAccessResource);
Acquire:
SerializeAccessOwningThread = ExGetCurrentResourceThread();
ExAcquireResourceExclusiveLite(&SerializeAccessResource, TRUE);
Release:
ExReleaseResourceForThreadLite(&SerializeAccessResource,
SerializeAccessOwningThread);
Petr
Petr Balas (petr at petrbalas dot cz)