Even more to come.
#define AOE_M_BUS_DOSNAME_ (L"\\DosDevices\\AoE")
/* TODO: Remove this pull from aoe/driver.c */
-extern device__dispatch_func aoe__scan;
-extern device__dispatch_func aoe__show;
-extern device__dispatch_func aoe__mount;
+extern WV_F_DEV_DISPATCH aoe__scan;
+extern WV_F_DEV_DISPATCH aoe__show;
+extern WV_F_DEV_DISPATCH aoe__mount;
/* Forward declarations. */
-static device__dev_ctl_func aoe_bus__dev_ctl_dispatch_;
+static WV_F_DEV_CTL aoe_bus__dev_ctl_dispatch_;
static WV_F_DEV_PNP_ID aoe_bus__pnp_id_;
winvblock__bool aoe_bus__create(void);
void aoe_bus__free(void);
WV_SP_BUS_T bus = WvBusFromDev(dev);
/* Pretend it's an IOCTL_FILE_DETACH. */
- return device__get(bus->LowerDeviceObject)->irp_mj->dev_ctl(
+ return WvDevFromDevObj(bus->LowerDeviceObject)->IrpMj->DevCtl(
dev,
irp,
IOCTL_FILE_DETACH
goto err_new_bus;
}
/* When the PDO is created, we need to handle PnP ID queries. */
- new_bus->Dev->ops.pnp_id = aoe_bus__pnp_id_;
+ new_bus->Dev->Ops.PnpId = aoe_bus__pnp_id_;
/* Add it as a sub-bus to WinVBlock. */
if (!WvBusAddChild(driver__bus(), new_bus->Dev)) {
DBG("Couldn't add AoE bus to WinVBlock bus!\n");
disk__type_ptr disk = disk__get_ptr(dev_walker);
struct aoe__disk_type_ * aoe_disk = aoe__get_(dev_walker);
- disks->Disk[count].Disk = dev_walker->dev_num;
+ disks->Disk[count].Disk = dev_walker->DevNum;
RtlCopyMemory(
&disks->Disk[count].ClientMac,
&aoe_disk->ClientMac,
);
/* Populate non-zero device defaults. */
aoe_disk->disk = disk;
- aoe_disk->prev_free = disk->device->ops.free;
- disk->device->ops.free = aoe__free_disk_;
- disk->device->ops.pnp_id = query_id;
+ aoe_disk->prev_free = disk->device->Ops.Free;
+ disk->device->Ops.Free = aoe__free_disk_;
+ disk->device->Ops.PnpId = query_id;
disk->disk_ops.io = io;
disk->disk_ops.max_xfer_len = max_xfer_len;
disk->disk_ops.init = init;
extern winvblock__lib_func void WvDevInit(WV_SP_DEV_T);
extern winvblock__lib_func WV_SP_DEV_T WvDevCreate(void);
-winvblock__def_struct(device__ops) {
- WV_FP_DEV_CREATE_PDO create_pdo;
- WV_FP_DEV_INIT init;
- WV_FP_DEV_PNP_ID pnp_id;
- WV_FP_DEV_CLOSE close;
- WV_FP_DEV_FREE free;
- };
-
-typedef void STDCALL device__thread_func(IN void *);
+typedef struct WV_DEV_OPS {
+ WV_FP_DEV_CREATE_PDO CreatePdo;
+ WV_FP_DEV_INIT Init;
+ WV_FP_DEV_PNP_ID PnpId;
+ WV_FP_DEV_CLOSE Close;
+ WV_FP_DEV_FREE Free;
+ } WV_S_DEV_OPS, * WV_SP_DEV_OPS;
/**
* The prototype for a device IRP dispatch.
* @v irp Points to the IRP.
* @ret NTSTATUS The status of processing the IRP for the device.
*/
-typedef NTSTATUS STDCALL device__dispatch_func(IN WV_SP_DEV_T, IN PIRP);
+typedef NTSTATUS STDCALL WV_F_DEV_DISPATCH(IN WV_SP_DEV_T, IN PIRP);
+typedef WV_F_DEV_DISPATCH * WV_FP_DEV_DISPATCH;
/**
* The prototype for a device IRP_MJ_DEVICE_CONTROL dispatch.
* @v code The I/O control code.
* @ret NTSTATUS The status of processing the IRP for the device.
*/
-typedef NTSTATUS STDCALL device__dev_ctl_func(
+typedef NTSTATUS STDCALL WV_F_DEV_CTL(
IN WV_SP_DEV_T,
IN PIRP,
IN ULONG POINTER_ALIGNMENT
);
+typedef WV_F_DEV_CTL * WV_FP_DEV_CTL;
/**
* The prototype for a device IRP_MJ_SCSI dispatch.
* @v code The SCSI function.
* @ret NTSTATUS The status of processing the IRP for the device.
*/
-typedef NTSTATUS STDCALL device__scsi_func(IN WV_SP_DEV_T, IN PIRP, IN UCHAR);
+typedef NTSTATUS STDCALL WV_F_DEV_SCSI(IN WV_SP_DEV_T, IN PIRP, IN UCHAR);
+typedef WV_F_DEV_SCSI * WV_FP_DEV_SCSI;
/**
* The prototype for a device IRP_MJ_PNP dispatch.
* @v code The minor function.
* @ret NTSTATUS The status of processing the IRP for the device.
*/
-typedef NTSTATUS STDCALL device__pnp_func(IN WV_SP_DEV_T, IN PIRP, IN UCHAR);
+typedef NTSTATUS STDCALL WV_F_DEV_PNP(IN WV_SP_DEV_T, IN PIRP, IN UCHAR);
+typedef WV_F_DEV_PNP * WV_FP_DEV_PNP;
/* IRP major function handler table. */
-struct device__irp_mj {
- device__dispatch_func * power;
- device__dispatch_func * sys_ctl;
- device__dev_ctl_func * dev_ctl;
- device__scsi_func * scsi;
- device__pnp_func * pnp;
- };
+typedef struct WV_DEV_IRP_MJ {
+ WV_FP_DEV_DISPATCH Power;
+ WV_FP_DEV_DISPATCH SysCtl;
+ WV_FP_DEV_CTL DevCtl;
+ WV_FP_DEV_SCSI Scsi;
+ WV_FP_DEV_PNP Pnp;
+ } WV_S_DEV_IRP_MJ, * WV_SP_DEV_IRP_MJ;
/* Details common to all devices this driver works with */
struct WV_DEV_T {
/* For debugging */
winvblock__bool IsBus;
- /* A device's IRP dispatch routine. */
- driver__dispatch_func * dispatch;
- /* The device's thread routine. */
- device__thread_func * thread;
- /* The device's thread wakeup signal. */
- KEVENT thread_wakeup;
- /* The device's IRP queue. */
- LIST_ENTRY irp_list;
- /* The device's IRP queue lock. */
- KSPIN_LOCK irp_list_lock;
/* Self is self-explanatory. */
PDEVICE_OBJECT Self;
- /* Flag to create/delete a PDO on a threaded bus. */
- winvblock__bool thread_pdo;
/* Points to the parent bus' DEVICE_OBJECT */
PDEVICE_OBJECT Parent;
/* The device's child ID relative to the parent bus. */
- winvblock__uint32 dev_num;
+ winvblock__uint32 DevNum;
/* Points to the driver. */
PDRIVER_OBJECT DriverObject;
/* Current state of the device. */
/* The next device in the parent bus' devices. TODO: Don't do this. */
WV_SP_DEV_T next_sibling_ptr;
/* The device operations. */
- device__ops ops;
- /* Tracking for the device module itself. */
- LIST_ENTRY tracking;
+ WV_S_DEV_OPS Ops;
/* Points to further extensions. */
winvblock__any_ptr ext;
/* How to handle IRPs based on major function code. */
- struct device__irp_mj * irp_mj;
+ WV_SP_DEV_IRP_MJ IrpMj;
};
-extern winvblock__lib_func WV_SP_DEV_T device__get(PDEVICE_OBJECT);
-extern winvblock__lib_func void device__set(PDEVICE_OBJECT, WV_SP_DEV_T);
-extern device__dispatch_func device__pnp_query_id;
+extern winvblock__lib_func WV_SP_DEV_T WvDevFromDevObj(PDEVICE_OBJECT);
+extern winvblock__lib_func void WvDevForDevObj(PDEVICE_OBJECT, WV_SP_DEV_T);
+extern WV_F_DEV_DISPATCH WvDevPnpQueryId;
#endif /* _WV_M_DEVICE_H_ */
UNICODE_STRING filepath_unicode;
};
-extern device__dispatch_func filedisk__attach;
+extern WV_F_DEV_DISPATCH filedisk__attach;
extern NTSTATUS filedisk__module_init(void);
#include "debug.h"
/* IRP_MJ_DEVICE_CONTROL dispatcher from bus/dev_ctl.c */
-extern device__dev_ctl_func WvBusDevCtlDispatch;
+extern WV_F_DEV_CTL WvBusDevCtlDispatch;
/* IRP_MJ_PNP dispatcher from bus/pnp.c */
-extern device__pnp_func WvBusPnpDispatch;
+extern WV_F_DEV_PNP WvBusPnpDispatch;
/* Types. */
typedef enum WV_BUS_WORK_ITEM_CMD_ {
/* Forward declarations. */
static WV_F_DEV_FREE WvBusFree_;
static WV_F_DEV_CREATE_PDO WvBusCreatePdo_;
-static device__dispatch_func WvBusPower_;
-static device__dispatch_func WvBusSysCtl_;
+static WV_F_DEV_DISPATCH WvBusPower_;
+static WV_F_DEV_DISPATCH WvBusSysCtl_;
static WV_F_BUS_THREAD WvBusDefaultThread_;
static winvblock__bool WvBusAddWorkItem_(
WV_SP_BUS_T,
static WV_SP_BUS_WORK_ITEM_ WvBusGetWorkItem_(WV_SP_BUS_T);
/* Globals. */
-struct device__irp_mj WvBusIrpMj_ = {
+WV_S_DEV_IRP_MJ WvBusIrpMj_ = {
WvBusPower_,
WvBusSysCtl_,
WvBusDevCtlDispatch,
- (device__scsi_func *) 0,
+ (WV_FP_DEV_SCSI) 0,
WvBusPnpDispatch,
};
* Initialize the device. For disks, this routine is responsible for
* determining the disk's geometry appropriately for AoE/RAM/file disks.
*/
- Dev->ops.init(Dev);
+ Dev->Ops.Init(Dev);
dev_obj->Flags &= ~DO_DEVICE_INITIALIZING;
/* Add the new device's extension to the bus' list of children. */
dev_num = 0;
} else {
walker = Bus->first_child;
/* If the first child device number isn't 0... */
- if (walker->dev_num) {
+ if (walker->DevNum) {
/* We insert before. */
Dev->next_sibling_ptr = walker;
Bus->first_child = Dev;
} else {
while (walker->next_sibling_ptr != NULL) {
/* If there's a gap in the device numbers for the bus... */
- if (walker->dev_num < walker->next_sibling_ptr->dev_num - 1) {
+ if (walker->DevNum < walker->next_sibling_ptr->DevNum - 1) {
/* Insert here, instead of at the end. */
- dev_num = walker->dev_num + 1;
+ dev_num = walker->DevNum + 1;
Dev->next_sibling_ptr = walker->next_sibling_ptr;
walker->next_sibling_ptr = Dev;
break;
}
walker = walker->next_sibling_ptr;
- dev_num = walker->dev_num + 1;
+ dev_num = walker->DevNum + 1;
}
/* If we haven't already inserted the device... */
if (!Dev->next_sibling_ptr) {
walker->next_sibling_ptr = Dev;
- dev_num = walker->dev_num + 1;
+ dev_num = walker->DevNum + 1;
}
}
}
- Dev->dev_num = dev_num;
+ Dev->DevNum = dev_num;
Bus->Children++;
if (Bus->PhysicalDeviceObject != NULL) {
IoInvalidateDeviceRelations(
RtlZeroMemory(Bus, sizeof *Bus);
/* Populate non-zero bus device defaults. */
Bus->Dev = dev;
- Bus->BusPrivate_.PrevFree = dev->ops.free;
+ Bus->BusPrivate_.PrevFree = dev->Ops.Free;
Bus->Thread = WvBusDefaultThread_;
KeInitializeSpinLock(&Bus->BusPrivate_.WorkItemsLock);
InitializeListHead(&Bus->BusPrivate_.WorkItems);
KeInitializeEvent(&Bus->ThreadSignal, SynchronizationEvent, FALSE);
- dev->ops.create_pdo = WvBusCreatePdo_;
- dev->ops.init = WvBusDevInit_;
- dev->ops.free = WvBusFree_;
+ dev->Ops.CreatePdo = WvBusCreatePdo_;
+ dev->Ops.Init = WvBusDevInit_;
+ dev->Ops.Free = WvBusFree_;
dev->ext = Bus;
- dev->irp_mj = &WvBusIrpMj_;
+ dev->IrpMj = &WvBusIrpMj_;
dev->IsBus = TRUE;
}
}
/* Set associations for the bus, device, PDO. */
- device__set(pdo, dev);
+ WvDevForDevObj(pdo, dev);
dev->Self = bus->PhysicalDeviceObject = pdo;
/* Set some DEVICE_OBJECT status. */
timeout.QuadPart = -300000000LL;
/* Hook WV_SP_DEV_T::ops.free() */
- bus->Dev->ops.free = WvBusThreadFree_;
+ bus->Dev->Ops.Free = WvBusThreadFree_;
/* When bus::Stop is set, we shut down. */
while (!bus->Stop) {
#include "filedisk.h"
/* Forward declarations. */
-static device__dispatch_func WvBusDevCtlDiskDetach_;
+static WV_F_DEV_DISPATCH WvBusDevCtlDiskDetach_;
static NTSTATUS STDCALL WvBusDevCtlDiskDetach_(
IN WV_SP_DEV_T dev,
if (dev_walker != NULL)
disk_walker = disk__get_ptr(dev_walker);
prev_disk_walker = disk_walker;
- while ((disk_walker != NULL) && (dev_walker->dev_num != disk_num)) {
+ while ((disk_walker != NULL) && (dev_walker->DevNum != disk_num)) {
prev_disk_walker = disk_walker;
dev_walker = dev_walker->next_sibling_ptr;
if (dev_walker != NULL)
irp->IoStatus.Information = 0;
return STATUS_INVALID_DEVICE_REQUEST;
}
- DBG("Deleting disk %d\n", dev_walker->dev_num);
+ DBG("Deleting disk %d\n", dev_walker->DevNum);
if (disk_walker == disk__get_ptr(bus->first_child))
bus->first_child = dev_walker->next_sibling_ptr;
else {
#include "probe.h"
/* Forward declarations. */
-static device__dispatch_func WvBusPnpStartDev_;
-static device__dispatch_func WvBusPnpRemoveDev_;
-static device__dispatch_func WvBusPnpQueryDevRelations_;
-static device__dispatch_func WvBusPnpQueryCapabilities_;
-static device__dispatch_func WvBusPnpQueryDevText_;
-static device__dispatch_func WvBusPnpQueryBusInfo_;
-static device__pnp_func WvBusPnpSimple_;
-device__pnp_func WvBusPnpDispatch;
+static WV_F_DEV_DISPATCH WvBusPnpStartDev_;
+static WV_F_DEV_DISPATCH WvBusPnpRemoveDev_;
+static WV_F_DEV_DISPATCH WvBusPnpQueryDevRelations_;
+static WV_F_DEV_DISPATCH WvBusPnpQueryCapabilities_;
+static WV_F_DEV_DISPATCH WvBusPnpQueryDevText_;
+static WV_F_DEV_DISPATCH WvBusPnpQueryBusInfo_;
+static WV_F_DEV_PNP WvBusPnpSimple_;
+WV_F_DEV_PNP WvBusPnpDispatch;
static NTSTATUS STDCALL WvBusPnpIoCompletion_(
IN PDEVICE_OBJECT dev_obj,
switch (code) {
case IRP_MN_QUERY_ID:
DBG("bus_pnp: IRP_MN_QUERY_ID\n");
- return device__pnp_query_id(dev, irp);
+ return WvDevPnpQueryId(dev, irp);
case IRP_MN_QUERY_DEVICE_TEXT:
DBG("bus_pnp: IRP_MN_QUERY_DEVICE_TEXT\n");
IN PCHAR DebugMessage
)
{
- WV_SP_DEV_T dev_ptr = device__get(DeviceObject);
+ WV_SP_DEV_T dev_ptr = WvDevFromDevObj(DeviceObject);
PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation ( Irp );
PSCSI_REQUEST_BLOCK Srb;
PCDB Cdb;
RtlZeroMemory(dev, sizeof *dev);
/* Populate non-zero device defaults. */
dev->DriverObject = driver__obj_ptr;
- dev->ops.create_pdo = device__make_pdo_;
- dev->ops.free = device__free_dev_;
+ dev->Ops.CreatePdo = device__make_pdo_;
+ dev->Ops.Free = device__free_dev_;
}
/**
* @v dev Points to the device that needs a PDO.
*/
winvblock__lib_func PDEVICE_OBJECT STDCALL WvDevCreatePdo(IN WV_SP_DEV_T dev) {
- return dev->ops.create_pdo(dev);
+ return dev->Ops.CreatePdo(dev);
}
/**
IN BUS_QUERY_ID_TYPE query_type,
IN OUT WCHAR (*buf)[512]
) {
- return dev->ops.pnp_id ? dev->ops.pnp_id(dev, query_type, buf) : 0;
+ return dev->Ops.PnpId ? dev->Ops.PnpId(dev, query_type, buf) : 0;
}
/* An IRP handler for a PnP ID query. */
-NTSTATUS STDCALL device__pnp_query_id(
- IN WV_SP_DEV_T dev,
- IN PIRP irp
- ) {
+NTSTATUS STDCALL WvDevPnpQueryId(IN WV_SP_DEV_T dev, IN PIRP irp) {
NTSTATUS status;
WCHAR (*str)[512];
winvblock__uint32 str_len;
*/
winvblock__lib_func void STDCALL WvDevClose(IN WV_SP_DEV_T dev) {
/* Call the device's close routine. */
- dev->ops.close(dev);
+ dev->Ops.Close(dev);
return;
}
*/
winvblock__lib_func void STDCALL WvDevFree(IN WV_SP_DEV_T dev) {
/* Call the device's free routine. */
- dev->ops.free(dev);
+ dev->Ops.Free(dev);
}
/**
* @v dev_obj Points to the DEVICE_OBJECT to get the device from.
* @ret Returns a pointer to the device on success, else NULL.
*/
-winvblock__lib_func WV_SP_DEV_T device__get(PDEVICE_OBJECT dev_obj) {
+winvblock__lib_func WV_SP_DEV_T WvDevFromDevObj(PDEVICE_OBJECT dev_obj) {
driver__dev_ext_ptr dev_ext;
if (!dev_obj)
* @v dev_obj Points to the DEVICE_OBJECT to set the device for.
* @v dev Points to the device to associate with.
*/
-winvblock__lib_func void device__set(PDEVICE_OBJECT dev_obj, WV_SP_DEV_T dev) {
+winvblock__lib_func void WvDevForDevObj(PDEVICE_OBJECT dev_obj, WV_SP_DEV_T dev) {
driver__dev_ext_ptr dev_ext = dev_obj->DeviceExtension;
dev_ext->device = dev;
return;
#include "debug.h"
/* Forward declarations. */
-static device__dispatch_func disk_dev_ctl__storage_query_prop_;
-static device__dispatch_func disk_dev_ctl__get_geom_;
-static device__dispatch_func disk_dev_ctl__scsi_get_address_;
+static WV_F_DEV_DISPATCH disk_dev_ctl__storage_query_prop_;
+static WV_F_DEV_DISPATCH disk_dev_ctl__get_geom_;
+static WV_F_DEV_DISPATCH disk_dev_ctl__scsi_get_address_;
static NTSTATUS STDCALL disk_dev_ctl__storage_query_prop_(
IN WV_SP_DEV_T dev,
scsi_address.Length = sizeof (SCSI_ADDRESS);
scsi_address.PortNumber = 0;
scsi_address.PathId = 0;
- scsi_address.TargetId = (winvblock__uint8) dev->dev_num;
+ scsi_address.TargetId = (winvblock__uint8) dev->DevNum;
scsi_address.Lun = 0;
RtlCopyMemory(
irp->AssociatedIrp.SystemBuffer,
#endif
/* IRP_MJ_DEVICE_CONTROL dispatcher from disk/dev_ctl.c */
-extern device__dev_ctl_func disk_dev_ctl__dispatch;
+extern WV_F_DEV_CTL disk_dev_ctl__dispatch;
/* IRP_MJ_SCSI dispatcher from disk/scsi.c */
-extern device__scsi_func disk_scsi__dispatch;
+extern WV_F_DEV_SCSI disk_scsi__dispatch;
/* IRP_MJ_PNP dispatcher from disk/pnp.c */
-extern device__pnp_func disk_pnp__dispatch;
+extern WV_F_DEV_PNP disk_pnp__dispatch;
/* Forward declarations. */
static WV_F_DEV_FREE free_disk;
-static device__dispatch_func disk__power_;
-static device__dispatch_func disk__sys_ctl_;
+static WV_F_DEV_DISPATCH disk__power_;
+static WV_F_DEV_DISPATCH disk__sys_ctl_;
/* Globals. */
static LIST_ENTRY disk_list;
winvblock__bool disk__removable[disk__media_count] = { TRUE, FALSE, TRUE };
PWCHAR disk__compat_ids[disk__media_count] =
{ L"GenSFloppy", L"GenDisk", L"GenCdRom" };
-struct device__irp_mj disk__irp_mj_ = {
+WV_S_DEV_IRP_MJ disk__irp_mj_ = {
disk__power_,
disk__sys_ctl_,
disk_dev_ctl__dispatch,
/*
* Set associations for the PDO, device, disk
*/
- device__set(dev_obj_ptr, dev_ptr);
+ WvDevForDevObj(dev_obj_ptr, dev_ptr);
dev_ptr->Self = dev_obj_ptr;
KeInitializeEvent ( &disk_ptr->SearchEvent, SynchronizationEvent, FALSE );
KeInitializeSpinLock ( &disk_ptr->SpinLock );
* Populate non-zero device defaults
*/
disk_ptr->device = dev_ptr;
- disk_ptr->prev_free = dev_ptr->ops.free;
+ disk_ptr->prev_free = dev_ptr->Ops.Free;
disk_ptr->disk_ops.max_xfer_len = default_max_xfer_len;
disk_ptr->disk_ops.init = default_init;
disk_ptr->disk_ops.close = default_close;
- dev_ptr->ops.close = disk__close_;
- dev_ptr->ops.create_pdo = create_pdo;
- dev_ptr->ops.free = free_disk;
- dev_ptr->ops.init = disk__init_;
+ dev_ptr->Ops.Close = disk__close_;
+ dev_ptr->Ops.CreatePdo = create_pdo;
+ dev_ptr->Ops.Free = free_disk;
+ dev_ptr->Ops.Init = disk__init_;
dev_ptr->ext = disk_ptr;
- dev_ptr->irp_mj = &disk__irp_mj_;
+ dev_ptr->IrpMj = &disk__irp_mj_;
KeInitializeSpinLock ( &disk_ptr->SpinLock );
return disk_ptr;
#include "debug.h"
/* Forward declarations. */
-static device__dispatch_func disk_pnp__query_dev_text_;
-static device__dispatch_func disk_pnp__query_dev_relations_;
-static device__dispatch_func disk_pnp__query_bus_info_;
-static device__dispatch_func disk_pnp__query_capabilities_;
-static device__pnp_func disk_pnp__simple_;
-device__pnp_func disk_pnp__dispatch;
+static WV_F_DEV_DISPATCH disk_pnp__query_dev_text_;
+static WV_F_DEV_DISPATCH disk_pnp__query_dev_relations_;
+static WV_F_DEV_DISPATCH disk_pnp__query_bus_info_;
+static WV_F_DEV_DISPATCH disk_pnp__query_capabilities_;
+static WV_F_DEV_PNP disk_pnp__simple_;
+WV_F_DEV_PNP disk_pnp__dispatch;
static NTSTATUS STDCALL disk_pnp__query_dev_text_(
IN WV_SP_DEV_T dev,
goto out;
}
disk = disk__get_ptr(dev);
- bus = WvBusFromDev(device__get(dev->Parent));
+ bus = WvBusFromDev(WvDevFromDevObj(dev->Parent));
bus_lower = bus->LowerDeviceObject;
if (bus_lower) {
status = WvBusGetDevCapabilities(
switch (code) {
case IRP_MN_QUERY_ID:
DBG("disk_pnp: IIRP_MN_QUERY_ID\n");
- return device__pnp_query_id(dev, irp);
+ return WvDevPnpQueryId(dev, irp);
case IRP_MN_QUERY_DEVICE_TEXT:
DBG("disk_pnp: IRP_MN_QUERY_DEVICE_TEXT\n");
disk_scsi__func disk_scsi__read_capacity_16_;
disk_scsi__func disk_scsi__mode_sense_;
disk_scsi__func disk_scsi__read_toc_;
-device__scsi_func disk_scsi__dispatch;
+WV_F_DEV_SCSI disk_scsi__dispatch;
#if _WIN32_WINNT <= 0x0600
# if 0 /* FIXME: To build with WINDDK 6001.18001 */
goto err_dos_symlink;
}
/* Set associations for the bus, device, FDO, PDO. */
- device__set(fdo, bus->Dev);
+ WvDevForDevObj(fdo, bus->Dev);
bus->Dev->Self = fdo;
bus->PhysicalDeviceObject = PhysicalDeviceObject;
fdo->Flags |= DO_DIRECT_IO; /* FIXME? */
IN PDEVICE_OBJECT dev_obj,
IN PIRP irp
) {
- /* device__get() checks for a NULL dev_obj */
- WV_SP_DEV_T dev = device__get(dev_obj);
+ /* WvDevFromDevObj() checks for a NULL dev_obj */
+ WV_SP_DEV_T dev = WvDevFromDevObj(dev_obj);
#ifdef DEBUGIRPS
Debug_IrpStart(dev_obj, irp);
return driver__complete_irp(irp, 0, STATUS_NO_SUCH_DEVICE);
}
/* Call the particular device's power handler. */
- if (dev->irp_mj && dev->irp_mj->power)
- return dev->irp_mj->power(dev, irp);
+ if (dev->IrpMj && dev->IrpMj->Power)
+ return dev->IrpMj->Power(dev, irp);
/* Otherwise, we don't support the IRP. */
return driver__complete_irp(irp, 0, STATUS_NOT_SUPPORTED);
}
IN PDEVICE_OBJECT dev_obj,
IN PIRP irp
) {
- /* device__get() checks for a NULL dev_obj */
- WV_SP_DEV_T dev = device__get(dev_obj);
+ /* WvDevFromDevObj() checks for a NULL dev_obj */
+ WV_SP_DEV_T dev = WvDevFromDevObj(dev_obj);
#ifdef DEBUGIRPS
Debug_IrpStart(dev_obj, irp);
IN PDEVICE_OBJECT dev_obj,
IN PIRP irp
) {
- /* device__get() checks for a NULL dev_obj */
- WV_SP_DEV_T dev = device__get(dev_obj);
+ /* WvDevFromDevObj() checks for a NULL dev_obj */
+ WV_SP_DEV_T dev = WvDevFromDevObj(dev_obj);
#ifdef DEBUGIRPS
Debug_IrpStart(dev_obj, irp);
if (!dev || dev->State == WvDevStateDeleted)
return driver__complete_irp(irp, 0, STATUS_NO_SUCH_DEVICE);
/* Call the particular device's power handler. */
- if (dev->irp_mj && dev->irp_mj->sys_ctl)
- return dev->irp_mj->sys_ctl(dev, irp);
+ if (dev->IrpMj && dev->IrpMj->SysCtl)
+ return dev->IrpMj->SysCtl(dev, irp);
/* Otherwise, we don't support the IRP. */
return driver__complete_irp(irp, 0, STATUS_NOT_SUPPORTED);
}
IN PDEVICE_OBJECT dev_obj,
IN PIRP irp
) {
- /* device__get() checks for a NULL dev_obj */
- WV_SP_DEV_T dev = device__get(dev_obj);
+ /* WvDevFromDevObj() checks for a NULL dev_obj */
+ WV_SP_DEV_T dev = WvDevFromDevObj(dev_obj);
PIO_STACK_LOCATION io_stack_loc = IoGetCurrentIrpStackLocation(irp);
#ifdef DEBUGIRPS
if (!dev || dev->State == WvDevStateDeleted)
return driver__complete_irp(irp, 0, STATUS_NO_SUCH_DEVICE);
/* Call the particular device's power handler. */
- if (dev->irp_mj && dev->irp_mj->dev_ctl) {
- return dev->irp_mj->dev_ctl(
+ if (dev->IrpMj && dev->IrpMj->DevCtl) {
+ return dev->IrpMj->DevCtl(
dev,
irp,
io_stack_loc->Parameters.DeviceIoControl.IoControlCode
IN PDEVICE_OBJECT dev_obj,
IN PIRP irp
) {
- /* device__get() checks for a NULL dev_obj */
- WV_SP_DEV_T dev = device__get(dev_obj);
+ /* WvDevFromDevObj() checks for a NULL dev_obj */
+ WV_SP_DEV_T dev = WvDevFromDevObj(dev_obj);
PIO_STACK_LOCATION io_stack_loc = IoGetCurrentIrpStackLocation(irp);
#ifdef DEBUGIRPS
if (!dev || dev->State == WvDevStateDeleted)
return driver__complete_irp(irp, 0, STATUS_NO_SUCH_DEVICE);
/* Call the particular device's power handler. */
- if (dev->irp_mj && dev->irp_mj->scsi) {
- return dev->irp_mj->scsi(
+ if (dev->IrpMj && dev->IrpMj->Scsi) {
+ return dev->IrpMj->Scsi(
dev,
irp,
io_stack_loc->Parameters.Scsi.Srb->Function
IN PDEVICE_OBJECT dev_obj,
IN PIRP irp
) {
- /* device__get() checks for a NULL dev_obj */
- WV_SP_DEV_T dev = device__get(dev_obj);
+ /* WvDevFromDevObj() checks for a NULL dev_obj */
+ WV_SP_DEV_T dev = WvDevFromDevObj(dev_obj);
PIO_STACK_LOCATION io_stack_loc = IoGetCurrentIrpStackLocation(irp);
#ifdef DEBUGIRPS
if (!dev || dev->State == WvDevStateDeleted)
return driver__complete_irp(irp, 0, STATUS_NO_SUCH_DEVICE);
/* Call the particular device's power handler. */
- if (dev->irp_mj && dev->irp_mj->pnp) {
- return dev->irp_mj->pnp(
+ if (dev->IrpMj && dev->IrpMj->Pnp) {
+ return dev->IrpMj->Pnp(
dev,
irp,
io_stack_loc->MinorFunction
DBG("No driver bus device!\n");
return NULL;
}
- return WvBusFromDev(device__get(driver__bus_fdo_));
+ return WvBusFromDev(WvDevFromDevObj(driver__bus_fdo_));
}
* Populate non-zero device defaults
*/
filedisk_ptr->disk = disk_ptr;
- filedisk_ptr->prev_free = disk_ptr->device->ops.free;
- disk_ptr->device->ops.free = free_filedisk;
- disk_ptr->device->ops.pnp_id = query_id;
+ filedisk_ptr->prev_free = disk_ptr->device->Ops.Free;
+ disk_ptr->device->Ops.Free = free_filedisk;
+ disk_ptr->device->Ops.PnpId = query_id;
disk_ptr->disk_ops.io = io;
disk_ptr->disk_ops.close = close;
disk_ptr->ext = filedisk_ptr;
KeWaitForSingleObject ( &filedisk_ptr->signal, Executive, KernelMode,
FALSE, &timeout );
KeResetEvent ( &filedisk_ptr->signal );
- /*
- * Are we being torn down? We abuse the device's free() member
- */
- if ( filedisk_ptr->disk->device->ops.free == NULL )
- {
- break;
- }
- /*
- * Process each read/write request in the list
- */
+ /* Are we being torn down? We abuse the device's Free() member. */
+ if (filedisk_ptr->disk->device->Ops.Free == NULL)
+ break;
+ /* Process each read/write request in the list. */
while ( walker =
ExInterlockedRemoveHeadList ( &filedisk_ptr->req_list,
&filedisk_ptr->req_list_lock ) )
/*
* Queue the tear-down and return. The thread will catch this on timeout.
*/
- dev_ptr->ops.free = NULL;
+ dev_ptr->Ops.Free = NULL;
}
/**
*/
filedisk_ptr->sync_io = io;
filedisk_ptr->disk->disk_ops.io = threaded_io;
- filedisk_ptr->disk->device->ops.free = free_threaded_filedisk;
+ filedisk_ptr->disk->device->Ops.Free = free_threaded_filedisk;
/*
* Initialize threading parameters and start the filedisk's thread
*/
* Populate non-zero device defaults
*/
ramdisk_ptr->disk = disk_ptr;
- ramdisk_ptr->prev_free = disk_ptr->device->ops.free;
- disk_ptr->device->ops.free = free_ramdisk;
- disk_ptr->device->ops.pnp_id = query_id;
+ ramdisk_ptr->prev_free = disk_ptr->device->Ops.Free;
+ disk_ptr->device->Ops.Free = free_ramdisk;
+ disk_ptr->device->Ops.PnpId = query_id;
disk_ptr->disk_ops.io = io;
disk_ptr->ext = ramdisk_ptr;