Hervé Poussineau <poussine@freesurf.fr>
No need to create \??\Mouse symlink in mouse driver, it's done in mouclass.
Modified: trunk/reactos/drivers/input/psaux/psaux.c
Modified: trunk/reactos/drivers/input/sermouse/sermouse.c

Modified: trunk/reactos/drivers/input/psaux/psaux.c
--- trunk/reactos/drivers/input/psaux/psaux.c	2005-01-26 22:03:05 UTC (rev 13322)
+++ trunk/reactos/drivers/input/psaux/psaux.c	2005-01-26 22:05:12 UTC (rev 13323)
@@ -177,7 +177,6 @@
 	PDEVICE_OBJECT DeviceObject;
 	UNICODE_STRING DeviceName;
 	UNICODE_STRING SuffixString;
-	UNICODE_STRING SymlinkName;
 	PDEVICE_EXTENSION DeviceExtension;
 	ULONG Suffix;
 	NTSTATUS Status;
@@ -213,25 +212,16 @@
 	}
  
 	ExFreePool(DeviceName.Buffer);
+	ExFreePool(SuffixString.Buffer);
 
 	/* Couldn't create device */
 	if (!NT_SUCCESS(Status))
 	{
-		ExFreePool(SuffixString.Buffer);
 		return NULL;
 	}
 
 	DeviceObject->Flags = DeviceObject->Flags | DO_BUFFERED_IO;
 
-	/* Create symlink */
-	RtlInitUnicodeString(&SymlinkName, NULL);
-	SymlinkName.MaximumLength = sizeof(L"\\??\\Mouse") + SUFFIX_MAXIMUM_SIZE + sizeof(UNICODE_NULL);
-	SymlinkName.Buffer = ExAllocatePool(PagedPool, SymlinkName.MaximumLength);
-	RtlAppendUnicodeToString(&SymlinkName, L"\\??\\Mouse");
-	RtlAppendUnicodeToString(&DeviceName, SuffixString.Buffer);
-	IoCreateSymbolicLink(&SymlinkName, &DeviceName);
-	ExFreePool(SuffixString.Buffer);
-
 	DeviceExtension = DeviceObject->DeviceExtension;
 	KeInitializeDpc(&DeviceExtension->IsrDpc, (PKDEFERRED_ROUTINE)PS2MouseIsrDpc, DeviceObject);
 

Modified: trunk/reactos/drivers/input/sermouse/sermouse.c
--- trunk/reactos/drivers/input/sermouse/sermouse.c	2005-01-26 22:03:05 UTC (rev 13322)
+++ trunk/reactos/drivers/input/sermouse/sermouse.c	2005-01-26 22:05:12 UTC (rev 13323)
@@ -26,8 +26,6 @@
 #define SERMOUSE_COM1_SUPPORT
 /* Check for mouse on COM2? */
 /* #define SERMOUSE_COM2_SUPPORT */
-/* Create \??\Mouse* symlink for device? */
-#define SERMOUSE_MOUSESYMLINK_SUPPORT
 
 /*
  * Definitions
@@ -511,7 +509,6 @@
 	PDEVICE_OBJECT DeviceObject;
 	UNICODE_STRING DeviceName;
 	UNICODE_STRING SuffixString;
-	UNICODE_STRING SymlinkName;
 	PDEVICE_EXTENSION DeviceExtension;
 	ULONG Suffix;
 	NTSTATUS Status;
@@ -541,28 +538,16 @@
 	}
 
 	ExFreePool(DeviceName.Buffer);
+	ExFreePool(SuffixString.Buffer);
 
 	/* Couldn't create device */
 	if (!NT_SUCCESS(Status))
 	{
-		ExFreePool(SuffixString.Buffer);
 		return NULL;
 	}
 
 	DeviceObject->Flags = DeviceObject->Flags | DO_BUFFERED_IO;
 
-#ifdef SERMOUSE_MOUSESYMLINK_SUPPORT
-	/* Create symlink */
-	/* FIXME: Why? FiN 20/08/2003 */
-	RtlInitUnicodeString(&SymlinkName, NULL);
-	SymlinkName.MaximumLength = sizeof(L"\\??\\Mouse") + SUFFIX_MAXIMUM_SIZE + sizeof(UNICODE_NULL);
-	SymlinkName.Buffer = ExAllocatePool(PagedPool, SymlinkName.MaximumLength);
-	RtlAppendUnicodeToString(&SymlinkName, L"\\??\\Mouse");
-	RtlAppendUnicodeToString(&DeviceName, SuffixString.Buffer);
-	IoCreateSymbolicLink(&SymlinkName, &DeviceName);
-#endif
-	ExFreePool(SuffixString.Buffer);
-
 	DeviceExtension = DeviceObject->DeviceExtension;
 	KeInitializeDpc(&DeviceExtension->IsrDpc, (PKDEFERRED_ROUTINE)SerialMouseIsrDpc, DeviceObject);