diff --git a/reactos/drivers/ksfilter/ks/api.c b/reactos/drivers/ksfilter/ks/api.c index 8f2874a2257..0e50f313f70 100644 --- a/reactos/drivers/ksfilter/ks/api.c +++ b/reactos/drivers/ksfilter/ks/api.c @@ -1220,7 +1220,7 @@ KsAcquireControl( } /* - @unimplemented + @implemented */ KSDDKAPI VOID @@ -1228,9 +1228,65 @@ NTAPI KsAcquireDevice( IN PKSDEVICE Device) { - UNIMPLEMENTED + IKsDevice *KsDevice; + PKSIDEVICE_HEADER DeviceHeader = (PKSIDEVICE_HEADER)CONTAINING_RECORD(Device, KSIDEVICE_HEADER, KsDevice); + + /* get device interface*/ + KsDevice = (IKsDevice*)&DeviceHeader->lpVtblIKsDevice; + + /* acquire device mutex */ + KsDevice->lpVtbl->AcquireDevice(KsDevice); } +/* + @implemented +*/ +VOID +NTAPI +KsReleaseDevice( + IN PKSDEVICE Device) +{ + IKsDevice *KsDevice; + PKSIDEVICE_HEADER DeviceHeader = (PKSIDEVICE_HEADER)CONTAINING_RECORD(Device, KSIDEVICE_HEADER, KsDevice); + + /* get device interface*/ + KsDevice = (IKsDevice*)&DeviceHeader->lpVtblIKsDevice; + + /* release device mutex */ + KsDevice->lpVtbl->ReleaseDevice(KsDevice); +} + +/* + @implemented +*/ +KSDDKAPI +VOID +NTAPI +KsTerminateDevice( + IN PDEVICE_OBJECT DeviceObject) +{ + IKsDevice *KsDevice; + PKSIDEVICE_HEADER DeviceHeader; + PDEVICE_EXTENSION DeviceExtension = (PDEVICE_EXTENSION)DeviceObject->DeviceExtension; + + /* get device header */ + DeviceHeader = DeviceExtension->DeviceHeader; + + /* get device interface*/ + KsDevice = (IKsDevice*)&DeviceHeader->lpVtblIKsDevice; + + /* now free device header */ + KsFreeDeviceHeader((KSDEVICE_HEADER)DeviceHeader); + + /* release interface when available */ + if (KsDevice) + { + /* delete IKsDevice interface */ + KsDevice->lpVtbl->Release(KsDevice); + } +} + + /* @unimplemented diff --git a/reactos/drivers/ksfilter/ks/device.c b/reactos/drivers/ksfilter/ks/device.c index 3bfd6191439..f6f5d33c66e 100644 --- a/reactos/drivers/ksfilter/ks/device.c +++ b/reactos/drivers/ksfilter/ks/device.c @@ -681,32 +681,7 @@ KsInitializeDevice( } /* - @implemented -*/ -KSDDKAPI -VOID -NTAPI -KsTerminateDevice( - IN PDEVICE_OBJECT DeviceObject) -{ - UNIMPLEMENTED -} - -/* - @implemented -*/ -VOID -NTAPI -KsReleaseDevice( - IN PKSDEVICE Device) -{ - UNIMPLEMENTED -} - - - -/* - @implemented + @unimplemented */ KSDDKAPI NTSTATUS diff --git a/reactos/drivers/ksfilter/ks/filter.c b/reactos/drivers/ksfilter/ks/filter.c index b8437cf8415..2cb42a737f0 100644 --- a/reactos/drivers/ksfilter/ks/filter.c +++ b/reactos/drivers/ksfilter/ks/filter.c @@ -926,7 +926,7 @@ KspCreateFilter( } /* - @implemented + @unimplemented */ KSDDKAPI VOID @@ -938,7 +938,7 @@ KsFilterAcquireProcessingMutex( } /* - @implemented + @unimplemented */ KSDDKAPI VOID @@ -950,7 +950,7 @@ KsFilterReleaseProcessingMutex( } /* - @implemented + @unimplemented */ KSDDKAPI NTSTATUS @@ -965,7 +965,7 @@ KsFilterAddTopologyConnections ( } /* - @implemented + @unimplemented */ KSDDKAPI VOID @@ -978,7 +978,7 @@ KsFilterAttemptProcessing( } /* - @implemented + @unimplemented */ KSDDKAPI NTSTATUS @@ -993,7 +993,7 @@ KsFilterCreateNode ( } /* - @implemented + @unimplemented */ KSDDKAPI NTSTATUS @@ -1008,7 +1008,7 @@ KsFilterCreatePinFactory ( } /* - @implemented + @unimplemented */ KSDDKAPI PKSGATE @@ -1021,7 +1021,7 @@ KsFilterGetAndGate( } /* - @implemented + @unimplemented */ KSDDKAPI ULONG @@ -1035,7 +1035,7 @@ KsFilterGetChildPinCount( } /* - @implemented + @unimplemented */ KSDDKAPI PKSPIN @@ -1049,7 +1049,7 @@ KsFilterGetFirstChildPin( } /* - @implemented + @unimplemented */ KSDDKAPI VOID @@ -1063,7 +1063,7 @@ KsFilterRegisterPowerCallbacks( } /* - @implemented + @unimplemented */ KSDDKAPI PKSFILTER diff --git a/reactos/drivers/ksfilter/ks/ks.spec b/reactos/drivers/ksfilter/ks/ks.spec index a3234b13c0f..c1de7281046 100644 --- a/reactos/drivers/ksfilter/ks/ks.spec +++ b/reactos/drivers/ksfilter/ks/ks.spec @@ -153,7 +153,7 @@ @ stdcall KsPinRegisterIrpCompletionCallback(ptr ptr) @ stdcall KsPinRegisterPowerCallbacks(ptr ptr ptr) @ stdcall KsPinReleaseProcessingMutex(ptr) -;@ stdcall KsPinSetPinClockTime(ptr long) +@ stdcall KsPinSetPinClockTime(ptr double) @ stdcall KsPinSubmitFrame(ptr ptr long ptr ptr) @ stdcall KsPinSubmitFrameMdl(ptr ptr ptr ptr) @ stdcall KsProbeStreamIrp(ptr long long) @@ -184,7 +184,7 @@ @ stdcall KsServiceBusEnumCreateRequest(ptr ptr) @ stdcall KsServiceBusEnumPnpRequest(ptr ptr) @ stdcall KsSetDefaultClockState(ptr long) -;@ stdcall KsSetDefaultClockTime(ptr long) +@ stdcall KsSetDefaultClockTime(ptr double) @ stdcall KsSetDevicePnpAndBaseObject(ptr ptr ptr) @ stdcall KsSetInformationFile(ptr ptr long long) @ stdcall KsSetMajorFunctionHandler(ptr long) @@ -202,7 +202,7 @@ @ stdcall KsStreamPointerGetMdl(ptr) @ stdcall KsStreamPointerGetNextClone(ptr) @ stdcall KsStreamPointerLock(ptr) -;@ stdcall KsStreamPointerScheduleTimeout(ptr ptr longlong) +@ stdcall KsStreamPointerScheduleTimeout(ptr ptr double) @ stdcall KsStreamPointerSetStatusCode(ptr long) @ stdcall KsStreamPointerUnlock(ptr long) @ stdcall KsSynchronousIoControlDevice(ptr long long ptr long ptr long ptr)