Author: fireball
Date: Tue Oct 3 01:23:41 2006
New Revision: 24369
URL:
http://svn.reactos.org/svn/reactos?rev=24369&view=rev
Log:
- Change CONNECT_DATA to DEV_CONNECT_DATA
- Add the last bit to the usb mouse driver to make it functional - recognition by
mouclass.sys, and sending input data to it
- Misc small changes
Now USB mouse works in 2nd stage (you need to add usbdriver.sys as a legacy driver to the
registry certainly)
TODO, but not of the top priority:
- Make unloading correct
Modified:
trunk/reactos/drivers/usb/nt4compat/usbdriver/compdrv.c
trunk/reactos/drivers/usb/nt4compat/usbdriver/devmgr.c
trunk/reactos/drivers/usb/nt4compat/usbdriver/devmgr.h
trunk/reactos/drivers/usb/nt4compat/usbdriver/gendrv.c
trunk/reactos/drivers/usb/nt4compat/usbdriver/hub.c
trunk/reactos/drivers/usb/nt4compat/usbdriver/mouse.c
trunk/reactos/drivers/usb/nt4compat/usbdriver/uhci.c
trunk/reactos/drivers/usb/nt4compat/usbdriver/umss.c
Modified: trunk/reactos/drivers/usb/nt4compat/usbdriver/compdrv.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/nt4compat/usbd…
==============================================================================
--- trunk/reactos/drivers/usb/nt4compat/usbdriver/compdrv.c (original)
+++ trunk/reactos/drivers/usb/nt4compat/usbdriver/compdrv.c Tue Oct 3 01:23:41 2006
@@ -24,7 +24,7 @@
VOID compdev_set_cfg_completion(PURB purb, PVOID context);
VOID compdev_select_driver(PUSB_DEV_MANAGER dev_mgr, DEV_HANDLE dev_handle);
-BOOLEAN compdev_connect(PCONNECT_DATA param, DEV_HANDLE dev_handle);
+BOOLEAN compdev_connect(PDEV_CONNECT_DATA param, DEV_HANDLE dev_handle);
BOOLEAN compdev_stop(PUSB_DEV_MANAGER dev_mgr, DEV_HANDLE dev_handle);
BOOLEAN compdev_disconnect(PUSB_DEV_MANAGER dev_mgr, DEV_HANDLE dev_handle);
@@ -72,7 +72,7 @@
}
BOOLEAN
-compdev_connect(PCONNECT_DATA param, DEV_HANDLE dev_handle)
+compdev_connect(PDEV_CONNECT_DATA param, DEV_HANDLE dev_handle)
{
PURB purb;
PUSB_CTRL_SETUP_PACKET psetup;
@@ -403,7 +403,7 @@
if (credit)
{
// ok, we find one
- CONNECT_DATA param;
+ DEV_CONNECT_DATA param;
if (pcand->disp_tbl.dev_connect)
{
Modified: trunk/reactos/drivers/usb/nt4compat/usbdriver/devmgr.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/nt4compat/usbd…
==============================================================================
--- trunk/reactos/drivers/usb/nt4compat/usbdriver/devmgr.c (original)
+++ trunk/reactos/drivers/usb/nt4compat/usbdriver/devmgr.c Tue Oct 3 01:23:41 2006
@@ -1080,9 +1080,9 @@
DEV_HANDLE dev_handle;
NTSTATUS status;
PUSB_DRIVER pdriver;
- PCONNECT_DATA pcd = (PCONNECT_DATA) Parameter;
+ PDEV_CONNECT_DATA pcd = (PDEV_CONNECT_DATA) Parameter;
PUSB_DEV_MANAGER dev_mgr;
- CONNECT_DATA param;
+ DEV_CONNECT_DATA param;
if (pcd == NULL)
return FALSE;
@@ -1111,7 +1111,7 @@
PUSB_DRIVER pdriver, pcand;
LONG credit, match, i;
DEV_HANDLE handle = 0;
- CONNECT_DATA cd;
+ DEV_CONNECT_DATA cd;
USE_BASIC_NON_PENDING_IRQL;
Modified: trunk/reactos/drivers/usb/nt4compat/usbdriver/devmgr.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/nt4compat/usbd…
==============================================================================
--- trunk/reactos/drivers/usb/nt4compat/usbdriver/devmgr.h (original)
+++ trunk/reactos/drivers/usb/nt4compat/usbdriver/devmgr.h Tue Oct 3 01:23:41 2006
@@ -1,16 +1,16 @@
#ifndef __DEVMGR_H__
#define __DEVMGR_H__
-typedef struct _CONNECT_DATA
+typedef struct _DEV_CONNECT_DATA
{
DEV_HANDLE dev_handle;
struct _USB_DRIVER *pdriver;
struct _USB_DEV_MANAGER *dev_mgr;
PUSB_INTERFACE_DESC if_desc;
-} CONNECT_DATA, *PCONNECT_DATA;
-
-typedef BOOLEAN ( *PDEV_CONNECT_EX )( PCONNECT_DATA init_param, DEV_HANDLE dev_handle );
+} DEV_CONNECT_DATA, *PDEV_CONNECT_DATA;
+
+typedef BOOLEAN ( *PDEV_CONNECT_EX )( PDEV_CONNECT_DATA init_param, DEV_HANDLE dev_handle
);
typedef BOOLEAN ( *PDEV_CONNECT )( struct _USB_DEV_MANAGER *dev_mgr, DEV_HANDLE
dev_handle );
typedef BOOLEAN ( *PDRVR_INIT )( struct _USB_DEV_MANAGER *dev_mgr, struct _USB_DRIVER
*pdriver );
Modified: trunk/reactos/drivers/usb/nt4compat/usbdriver/gendrv.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/nt4compat/usbd…
==============================================================================
--- trunk/reactos/drivers/usb/nt4compat/usbdriver/gendrv.c (original)
+++ trunk/reactos/drivers/usb/nt4compat/usbdriver/gendrv.c Tue Oct 3 01:23:41 2006
@@ -75,7 +75,7 @@
VOID gendrv_set_cfg_completion(PURB purb, PVOID context);
-BOOLEAN gendrv_connect(PCONNECT_DATA param, DEV_HANDLE dev_handle);
+BOOLEAN gendrv_connect(PDEV_CONNECT_DATA param, DEV_HANDLE dev_handle);
BOOLEAN gendrv_stop(PUSB_DEV_MANAGER dev_mgr, DEV_HANDLE dev_handle);
@@ -168,7 +168,7 @@
}
BOOLEAN
-gendrv_connect(PCONNECT_DATA param, DEV_HANDLE dev_handle)
+gendrv_connect(PDEV_CONNECT_DATA param, DEV_HANDLE dev_handle)
{
PURB purb;
PUSB_CTRL_SETUP_PACKET psetup;
@@ -717,7 +717,7 @@
BOOLEAN
-gendrv_if_connect(PCONNECT_DATA params, DEV_HANDLE if_handle)
+gendrv_if_connect(PDEV_CONNECT_DATA params, DEV_HANDLE if_handle)
{
//
// try to search the registry to find one driver.
Modified: trunk/reactos/drivers/usb/nt4compat/usbdriver/hub.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/nt4compat/usbd…
==============================================================================
--- trunk/reactos/drivers/usb/nt4compat/usbdriver/hub.c (original)
+++ trunk/reactos/drivers/usb/nt4compat/usbdriver/hub.c Tue Oct 3 01:23:41 2006
@@ -79,7 +79,7 @@
NTSTATUS hub_start_int_request(PUSB_DEV pdev);
-BOOLEAN hub_connect(PCONNECT_DATA init_param, DEV_HANDLE dev_handle);
+BOOLEAN hub_connect(PDEV_CONNECT_DATA init_param, DEV_HANDLE dev_handle);
BOOLEAN hub_disconnect(PUSB_DEV_MANAGER dev_mgr, DEV_HANDLE dev_handle);
@@ -1908,7 +1908,7 @@
}
BOOLEAN
-hub_connect(PCONNECT_DATA param, DEV_HANDLE dev_handle)
+hub_connect(PDEV_CONNECT_DATA param, DEV_HANDLE dev_handle)
{
URB urb, *purb;
CHAR buf[512];
Modified: trunk/reactos/drivers/usb/nt4compat/usbdriver/mouse.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/nt4compat/usbd…
==============================================================================
--- trunk/reactos/drivers/usb/nt4compat/usbdriver/mouse.c (original)
+++ trunk/reactos/drivers/usb/nt4compat/usbdriver/mouse.c Tue Oct 3 01:23:41 2006
@@ -8,6 +8,7 @@
#include "usbdriver.h"
#include "ntddmou.h"
+#include "kbdmou.h"
//FIXME: is it needed at all?
typedef struct _USBMP_DEVICE_EXTENSION
@@ -15,10 +16,14 @@
BOOLEAN IsFDO;
} USBMP_DEVICE_EXTENSION, *PUSBMP_DEVICE_EXTENSION;
+/* Data for embedded drivers */
+//CONNECT_DATA KbdClassInformation;
+CONNECT_DATA MouseClassInformation;
+
PDEVICE_OBJECT MouseFdo = NULL;
-BOOLEAN mouse_connect(PCONNECT_DATA dev_mgr, DEV_HANDLE dev_handle);
+BOOLEAN mouse_connect(PDEV_CONNECT_DATA dev_mgr, DEV_HANDLE dev_handle);
BOOLEAN mouse_disconnect(PUSB_DEV_MANAGER dev_mgr, DEV_HANDLE dev_handle);
BOOLEAN mouse_stop(PUSB_DEV_MANAGER dev_mgr, DEV_HANDLE dev_handle);
VOID mouse_irq(PURB purb, PVOID pcontext);
@@ -63,6 +68,9 @@
pdriver->disp_tbl.dev_disconnect = mouse_disconnect;
pdriver->disp_tbl.dev_stop = mouse_stop;
pdriver->disp_tbl.dev_reserved = NULL;
+
+ // Zero out the class information structure
+ RtlZeroMemory(&MouseClassInformation, sizeof(CONNECT_DATA));
// Create the device
MouseCreateDevice(dev_mgr->usb_driver_obj);
@@ -91,7 +99,7 @@
}
BOOLEAN
-mouse_connect(PCONNECT_DATA param, DEV_HANDLE dev_handle)
+mouse_connect(PDEV_CONNECT_DATA param, DEV_HANDLE dev_handle)
{
PURB purb;
NTSTATUS status;
@@ -219,7 +227,7 @@
mouse_irq(PURB purb, PVOID pcontext)
{
MOUSE_INPUT_DATA MouseInputData;
- //ULONG InputDataConsumed;
+ ULONG InputDataConsumed;
NTSTATUS status;
PMOUSE_DRVR_EXTENSION pdev_ext = (PMOUSE_DRVR_EXTENSION)pcontext;
signed char *data = pdev_ext->mouse_data;
@@ -275,18 +283,18 @@
}
// Commit the input data somewhere...
- /*if (UsbPortInterface.MouseConnectData->ClassService)
+ if (MouseClassInformation.ClassService)
{
KIRQL OldIrql;
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
- (*(PSERVICE_CALLBACK_ROUTINE)UsbPortInterface.MouseConnectData->ClassService)(
- UsbPortInterface.MouseConnectData->ClassDeviceObject,
+ (*(PSERVICE_CALLBACK_ROUTINE)MouseClassInformation.ClassService)(
+ MouseClassInformation.ClassDeviceObject,
&MouseInputData,
(&MouseInputData)+1,
&InputDataConsumed);
KeLowerIrql(OldIrql);
- }*/
+ }
// Save old button data
pdev_ext->btn_old = data[0];
@@ -338,7 +346,7 @@
NTSTATUS
MouseDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
{
- //NTSTATUS Status = STATUS_INVALID_DEVICE_REQUEST;
+ NTSTATUS Status = STATUS_INVALID_DEVICE_REQUEST;
usb_dbg_print(DBGLVL_MAXIMUM, ("MouseDispatch(DO %p, code 0x%lx) called\n",
DeviceObject,
@@ -356,7 +364,7 @@
{
case IOCTL_INTERNAL_KEYBOARD_CONNECT:
DPRINT("IOCTL_INTERNAL_KEYBOARD_CONNECT\n");
- if (Stk->Parameters.DeviceIoControl.InputBufferLength <
sizeof(CONNECT_DATA)) {
+ if (Stk->Parameters.DeviceIoControl.InputBufferLength <
sizeof(DEV_CONNECT_DATA)) {
DPRINT1("Keyboard IOCTL_INTERNAL_KEYBOARD_CONNECT "
"invalid buffer size\n");
Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
@@ -365,7 +373,7 @@
RtlCopyMemory(&KbdClassInformation,
Stk->Parameters.DeviceIoControl.Type3InputBuffer,
- sizeof(CONNECT_DATA));
+ sizeof(DEV_CONNECT_DATA));
Irp->IoStatus.Status = STATUS_SUCCESS;
break;
@@ -484,7 +492,9 @@
intcontfailure:
Status = Irp->IoStatus.Status;
}
- else if (DeviceObject == MouseFdo)
+ else
+#endif
+ if (DeviceObject == MouseFdo)
{
// it's mouse's IOCTL
PIO_STACK_LOCATION Stk;
@@ -495,10 +505,10 @@
switch (Stk->Parameters.DeviceIoControl.IoControlCode)
{
case IOCTL_INTERNAL_MOUSE_CONNECT:
- DPRINT("IOCTL_INTERNAL_MOUSE_CONNECT\n");
+ usb_dbg_print(DBGLVL_MAXIMUM, ("IOCTL_INTERNAL_MOUSE_CONNECT\n"));
if (Stk->Parameters.DeviceIoControl.InputBufferLength <
sizeof(CONNECT_DATA)) {
- DPRINT1("IOCTL_INTERNAL_MOUSE_CONNECT: "
- "invalid buffer size\n");
+ usb_dbg_print(DBGLVL_MINIMUM, ("IOCTL_INTERNAL_MOUSE_CONNECT: "
+ "invalid buffer size\n"));
Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
goto intcontfailure2;
}
@@ -517,28 +527,16 @@
intcontfailure2:
Status = Irp->IoStatus.Status;
}
- else
- {
- return UsbMpPdoInternalDeviceControlCore(DeviceObject, Irp);
- }
-
-
- if (Status == STATUS_INVALID_DEVICE_REQUEST) {
- DPRINT1("Invalid internal device request!\n");
+
+ if (Status == STATUS_INVALID_DEVICE_REQUEST)
+ {
+ usb_dbg_print(DBGLVL_MINIMUM, ("Invalid internal device request!\n"));
}
if (Status != STATUS_PENDING)
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Status;
-
-#endif
-
- // Default handler
- Irp->IoStatus.Information = 0;
- Irp->IoStatus.Status = STATUS_NOT_SUPPORTED;
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
- return STATUS_NOT_SUPPORTED;
}
NTSTATUS
@@ -571,7 +569,7 @@
goto cleanup;
}
- Status = ZwSetValueKey(hPortKey, DeviceName, 0, REG_SZ, (PVOID)RegistryPath,
wcslen(RegistryPath) * sizeof(WCHAR) + sizeof(UNICODE_NULL));
+ Status = ZwSetValueKey(hPortKey, DeviceName, 0, REG_SZ, (PVOID)RegistryPath,
(ULONG)(wcslen(RegistryPath) * sizeof(WCHAR) + sizeof(UNICODE_NULL)));
if (!NT_SUCCESS(Status))
{
usb_dbg_print(DBGLVL_MINIMUM, ("ZwSetValueKey() failed with status
0x%08lx\n", Status));
Modified: trunk/reactos/drivers/usb/nt4compat/usbdriver/uhci.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/nt4compat/usbd…
==============================================================================
--- trunk/reactos/drivers/usb/nt4compat/usbdriver/uhci.c (original)
+++ trunk/reactos/drivers/usb/nt4compat/usbdriver/uhci.c Tue Oct 3 01:23:41 2006
@@ -128,7 +128,7 @@
extern VOID rh_timer_svc_int_completion(PUSB_DEV dev, PVOID context);
-ULONG debug_level = DBGLVL_MAXIMUM;
+ULONG debug_level = DBGLVL_MINIMUM;//DBGLVL_MAXIMUM;
PDRIVER_OBJECT usb_driver_obj = NULL;
extern USB_DEV_MANAGER g_dev_mgr;
Modified: trunk/reactos/drivers/usb/nt4compat/usbdriver/umss.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/nt4compat/usbd…
==============================================================================
--- trunk/reactos/drivers/usb/nt4compat/usbdriver/umss.c (original)
+++ trunk/reactos/drivers/usb/nt4compat/usbdriver/umss.c Tue Oct 3 01:23:41 2006
@@ -65,7 +65,7 @@
VOID NTAPI umss_start_io(IN PDEVICE_OBJECT dev_obj, IN PIRP irp);
NTSTATUS umss_port_dispatch_routine(PDEVICE_OBJECT pdev_obj, PIRP irp);
-BOOLEAN umss_connect(PCONNECT_DATA dev_mgr, DEV_HANDLE dev_handle);
+BOOLEAN umss_connect(PDEV_CONNECT_DATA dev_mgr, DEV_HANDLE dev_handle);
BOOLEAN umss_disconnect(PUSB_DEV_MANAGER dev_mgr, DEV_HANDLE dev_handle);
BOOLEAN umss_stop(PUSB_DEV_MANAGER dev_mgr, DEV_HANDLE dev_handle);
NTSTATUS umss_dispatch_routine(PDEVICE_OBJECT pdev_obj, PIRP irp);
@@ -384,7 +384,7 @@
}
BOOLEAN
-umss_connect(PCONNECT_DATA param, DEV_HANDLE dev_handle)
+umss_connect(PDEV_CONNECT_DATA param, DEV_HANDLE dev_handle)
{
PURB purb;
NTSTATUS status;
@@ -1475,7 +1475,7 @@
}
BOOLEAN
-umss_if_connect(PCONNECT_DATA params, DEV_HANDLE if_handle)
+umss_if_connect(PDEV_CONNECT_DATA params, DEV_HANDLE if_handle)
{
PURB purb;
LONG if_idx, i;