winvblock__uint32 Children;
struct device__type * first_child;
KSPIN_LOCK SpinLock;
- device__free_func * prev_free;
UNICODE_STRING dev_name;
UNICODE_STRING dos_dev_name;
winvblock__bool named;
struct {
LIST_ENTRY Nodes;
USHORT NodeCount;
+ device__free_func * PrevFree;
} BusPrivate_;
} WV_S_BUS_T, * WV_SP_BUS_T;
RtlZeroMemory(bus, sizeof *bus);
/* Populate non-zero bus device defaults. */
bus->Dev = dev;
- bus->prev_free = dev->ops.free;
+ bus->BusPrivate_.PrevFree = dev->ops.free;
bus->thread = bus__default_thread_;
KeInitializeSpinLock(&bus->SpinLock);
KeInitializeSpinLock(&bus->work_items_lock);
static void STDCALL bus__free_(IN struct device__type * dev_ptr) {
WV_SP_BUS_T bus_ptr = WvBusFromDev(dev_ptr);
/* Free the "inherited class". */
- bus_ptr->prev_free(dev_ptr);
+ bus_ptr->BusPrivate_.PrevFree(dev_ptr);
wv_free(bus_ptr);
}