X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fdrivers%2Fksfilter%2Fks%2Firp.c;h=0c6036e20595e307ad98f2d53a0a823e2f7874c1;hp=332be5cc38992df781063676c807985ed7158996;hb=99db21ebb0cfbc8ba60a7062d74cfab729417493;hpb=cfe909e6a4a6144fd4ac56283f7de9fe911d27b0 diff --git a/reactos/drivers/ksfilter/ks/irp.c b/reactos/drivers/ksfilter/ks/irp.c index 332be5cc389..0c6036e2059 100644 --- a/reactos/drivers/ksfilter/ks/irp.c +++ b/reactos/drivers/ksfilter/ks/irp.c @@ -1360,7 +1360,7 @@ KsRemoveIrpFromCancelableQueue( PLIST_ENTRY CurEntry; KIRQL OldIrql; - DPRINT("KsRemoveIrpFromCancelableQueue ListHead %p SpinLock %p ListLocation %x RemovalOperation %x\n", QueueHead, SpinLock, ListLocation, RemovalOperation); + //DPRINT("KsRemoveIrpFromCancelableQueue ListHead %p SpinLock %p ListLocation %x RemovalOperation %x\n", QueueHead, SpinLock, ListLocation, RemovalOperation); /* check parameters */ if (!QueueHead || !SpinLock) @@ -1719,6 +1719,8 @@ FindMatchingCreateItem( { PLIST_ENTRY Entry; PCREATE_ITEM_ENTRY CreateItemEntry; + UNICODE_STRING RefString; + #ifndef MS_KSUSER /* remove '\' slash */ @@ -1726,6 +1728,16 @@ FindMatchingCreateItem( BufferSize -= sizeof(WCHAR); #endif + if (!wcschr(Buffer, L'\\')) + { + RtlInitUnicodeString(&RefString, Buffer); + } + else + { + RefString.Buffer = Buffer; + RefString.Length = RefString.MaximumLength = ((ULONG_PTR)wcschr(Buffer, L'\\') - (ULONG_PTR)Buffer); + } + /* point to first entry */ Entry = ListHead->Flink; @@ -1753,9 +1765,9 @@ FindMatchingCreateItem( ASSERT(CreateItemEntry->CreateItem->ObjectClass.Buffer); - DPRINT("CreateItem %S Length %u Request %S %u\n", CreateItemEntry->CreateItem->ObjectClass.Buffer, + DPRINT("CreateItem %S Length %u Request %wZ %u\n", CreateItemEntry->CreateItem->ObjectClass.Buffer, CreateItemEntry->CreateItem->ObjectClass.Length, - Buffer, + &RefString, BufferSize); if (CreateItemEntry->CreateItem->ObjectClass.Length > BufferSize) @@ -1766,7 +1778,7 @@ FindMatchingCreateItem( } /* now check if the object class is the same */ - if (RtlCompareMemory(CreateItemEntry->CreateItem->ObjectClass.Buffer, Buffer, CreateItemEntry->CreateItem->ObjectClass.Length) == CreateItemEntry->CreateItem->ObjectClass.Length) + if (!RtlCompareUnicodeString(&CreateItemEntry->CreateItem->ObjectClass, &RefString, TRUE)) { /* found matching create item */ *OutCreateItem = CreateItemEntry; @@ -1994,7 +2006,7 @@ KsDispatchIrp( PKSIDEVICE_HEADER DeviceHeader; PDEVICE_EXTENSION DeviceExtension; - DPRINT("KsDispatchIrp DeviceObject %p Irp %p\n", DeviceObject, Irp); + //DPRINT("KsDispatchIrp DeviceObject %p Irp %p\n", DeviceObject, Irp); /* get device extension */ DeviceExtension = (PDEVICE_EXTENSION)DeviceObject->DeviceExtension; @@ -2010,7 +2022,7 @@ KsDispatchIrp( if (IoStack->MajorFunction == IRP_MJ_CREATE) { /* check internal type */ - if (DeviceHeader->lpVtblIKsDevice) /* FIXME improve check */ + if (DeviceHeader->BasicHeader.OuterUnknown) /* FIXME improve check */ { /* AVStream client */ return IKsDevice_Create(DeviceObject, Irp); @@ -2042,7 +2054,7 @@ KsDispatchIrp( if (IoStack->MajorFunction == IRP_MJ_POWER) { /* check internal type */ - if (DeviceHeader->lpVtblIKsDevice) /* FIXME improve check */ + if (DeviceHeader->BasicHeader.OuterUnknown) /* FIXME improve check */ { /* AVStream client */ return IKsDevice_Power(DeviceObject, Irp); @@ -2056,7 +2068,7 @@ KsDispatchIrp( else if (IoStack->MajorFunction == IRP_MJ_PNP) /* dispatch pnp */ { /* check internal type */ - if (DeviceHeader->lpVtblIKsDevice) /* FIXME improve check */ + if (DeviceHeader->BasicHeader.OuterUnknown) /* FIXME improve check */ { /* AVStream client */ return IKsDevice_Pnp(DeviceObject, Irp);