mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 13:56:05 +00:00
[KS]
- make a copy of KSFILTER_DESCRIPTOR as it might have been allocated from the stack - always initialize object bag in filter factory svn path=/trunk/; revision=72779
This commit is contained in:
parent
ed87e2056d
commit
2380a6ec54
1 changed files with 18 additions and 10 deletions
|
@ -238,12 +238,20 @@ IKsFilterFactory_fnInitialize(
|
|||
/* initialize filterfactory */
|
||||
This->SleepCallback = SleepCallback;
|
||||
This->WakeCallback = WakeCallback;
|
||||
This->FilterFactory.FilterDescriptor = Descriptor;
|
||||
This->Header.KsDevice = &DeviceExtension->DeviceHeader->KsDevice;
|
||||
This->Header.Type = KsObjectTypeFilterFactory;
|
||||
This->Header.Parent.KsDevice = &DeviceExtension->DeviceHeader->KsDevice;
|
||||
This->DeviceHeader = DeviceExtension->DeviceHeader;
|
||||
|
||||
/* copy descriptor */
|
||||
This->FilterFactory.FilterDescriptor = AllocateItem(NonPagedPool, sizeof(KSFILTER_DESCRIPTOR));
|
||||
if (!This->FilterFactory.FilterDescriptor)
|
||||
{
|
||||
DPRINT("out of memory");
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
RtlMoveMemory(This->FilterFactory.FilterDescriptor, Descriptor, sizeof(KSFILTER_DESCRIPTOR));
|
||||
|
||||
/* initialize filter factory control mutex */
|
||||
This->Header.ControlMutex = &This->ControlMutex;
|
||||
KeInitializeMutex(This->Header.ControlMutex, 0);
|
||||
|
@ -313,19 +321,19 @@ IKsFilterFactory_fnInitialize(
|
|||
RtlFreeUnicodeString(&ReferenceString);
|
||||
}
|
||||
|
||||
/* create a object bag for the filter factory */
|
||||
This->FilterFactory.Bag = AllocateItem(NonPagedPool, sizeof(KSIOBJECT_BAG));
|
||||
if (This->FilterFactory.Bag)
|
||||
{
|
||||
/* initialize object bag */
|
||||
KsDevice = (IKsDevice*)&DeviceExtension->DeviceHeader->BasicHeader.OuterUnknown;
|
||||
KsDevice->lpVtbl->InitializeObjectBag(KsDevice, (PKSIOBJECT_BAG)This->FilterFactory.Bag, NULL);
|
||||
}
|
||||
|
||||
if (FilterFactory)
|
||||
{
|
||||
/* return filterfactory */
|
||||
*FilterFactory = &This->FilterFactory;
|
||||
|
||||
/* create a object bag for the filter factory */
|
||||
This->FilterFactory.Bag = AllocateItem(NonPagedPool, sizeof(KSIOBJECT_BAG));
|
||||
if (This->FilterFactory.Bag)
|
||||
{
|
||||
/* initialize object bag */
|
||||
KsDevice = (IKsDevice*)&DeviceExtension->DeviceHeader->BasicHeader.OuterUnknown;
|
||||
KsDevice->lpVtbl->InitializeObjectBag(KsDevice, (PKSIOBJECT_BAG)This->FilterFactory.Bag, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/* attach filterfactory to device header */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue