Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results


More Info on Driver Writing and Debugging

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:

Before Posting...

Please check out the Community Guidelines in the Announcements and Administration Category.


OSR_Community_UserOSR_Community_User Member Posts: 110,217
The NT DDK Help / Reference for BRUSHOBJ clearly states

If the iSolidColor member is 0xFFFFFFFF **or** the pvRbrush member is null, the driver must call the BRUSHOBJ_pvGetRbrush function to realize the brush

(my emphasis on the **or**)

The NT DDK Help / Reference for BRUSHOBJ_pvGetRBrush clearly states

BRUSHOBJ_pvGetRbrush is called when the brush is a pattern brush that has not yet been realized; that is, it is called when the iSolidColor member of the BRUSHOBJ structure is 0xFFFFFFFF **and** the pvRbrush member is null.

(my emphasis on the **and**)

If I AND, then colors come across wrong (mostly black). If I OR, then I get a BSOFD in between my call to BRUSHOBJ_pvGetRbrush and the GDIs call to DrvRealizeBrush (yes, Virginia, pbo has been confirmed to be non-NULL).

Anybody have any suggestions / ideas, etc.?


Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

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!
Writing WDF Drivers 24 January 2022 Live, Online
Internals & Software Drivers 7 February 2022 Live, Online
Kernel Debugging 21 March 2022 Live, Online
Developing Minifilters 23 May 2022 Live, Online