From bb681bcfac159532cb341e726b4236bca0f70189 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Thu, 17 Apr 2008 18:01:51 +0000 Subject: [PATCH] merge ksuser.dll from reactx branch to trunk not all api are implemented. reactx.h header are now in use here svn path=/trunk/; revision=33006 --- reactos/dll/directx/ksuser/ksuser.c | 230 +++++++++++++++++++---- reactos/dll/directx/ksuser/ksuser.def | 9 +- reactos/dll/directx/ksuser/ksuser.h | 15 ++ reactos/dll/directx/ksuser/ksuser.rbuild | 4 +- reactos/dll/directx/ksuser/ksuser.rc | 10 +- 5 files changed, 221 insertions(+), 47 deletions(-) create mode 100644 reactos/dll/directx/ksuser/ksuser.h diff --git a/reactos/dll/directx/ksuser/ksuser.c b/reactos/dll/directx/ksuser/ksuser.c index c4fb073cc72..fe059baa126 100644 --- a/reactos/dll/directx/ksuser/ksuser.c +++ b/reactos/dll/directx/ksuser/ksuser.c @@ -1,7 +1,7 @@ /* - * KSUSER.DLL - ReactOS User CSA Library + * KSUSER.DLL - ReactOS * - * Copyright 2008 Dmitry Chapyshev + * Copyright 2008 Magnus Olsen and Dmitry Chapyshev * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -18,46 +18,210 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#include -#include -#include -#include -#include -KSDDKAPI NTSTATUS NTAPI -KsCreateAllocator( - HANDLE ConnectionHandle, - PKSALLOCATOR_FRAMING AllocatorFraming, - PHANDLE AllocatorHandle) +#include "ksuser.h" + +NTSTATUS NTAPI KsiCreateObjectType( HANDLE hHandle, PVOID guidstr, PVOID Buffer, ULONG BufferSize, ACCESS_MASK DesiredAccess, PHANDLE phHandle); + +NTSTATUS +NTAPI +KsiCreateObjectType( HANDLE hHandle, + PVOID IID, + PVOID Buffer, + ULONG BufferSize, + ACCESS_MASK DesiredAccess, + PHANDLE phHandle) { - return STATUS_SUCCESS; + UNIMPLEMENTED + return 0; } -KSDDKAPI NTSTATUS NTAPI -KsCreateClock( - HANDLE ConnectionHandle, - PKSCLOCK_CREATE ClockCreate, - PHANDLE ClockHandle) +/*++ +* @name KsCreateAllocator +* @implemented +* The function KsCreateAllocator creates a handle to an allocator for the given sink connection handle +* +* @param HANDLE ConnectionHandle +* Handle to the sink connection on which to create the allocator +* +* @param PKSALLOCATOR_FRAMING AllocatorFraming +* the input param we using to alloc our framing +* +* @param PHANDLE AllocatorHandle +* Our new handle that we have alloc +* +* @return +* Return NTSTATUS error code or sussess code. +* +* @remarks. +* none +* +*--*/ +KSDDKAPI +NTSTATUS +NTAPI +KsCreateAllocator(HANDLE ConnectionHandle, + PKSALLOCATOR_FRAMING AllocatorFraming, + PHANDLE AllocatorHandle) + { - return STATUS_SUCCESS; + return KsiCreateObjectType( ConnectionHandle, + KSSTRING_Allocator, + (PVOID) AllocatorFraming, + sizeof(KSALLOCATOR_FRAMING), + GENERIC_READ, + AllocatorHandle); } -KSDDKAPI NTSTATUS NTAPI -KsCreatePin( - HANDLE FilterHandle, - PKSPIN_CONNECT Connect, - ACCESS_MASK DesiredAccess, - PHANDLE ConnectionHandle) +/*++ +* @name KsCreateClock +* @implemented +* +* The function KsCreateClock creates handle to clock instance +* +* @param HANDLE ConnectionHandle +* Handle to use to create the clock +* +* @param PKSCLOCK_CREATE ClockCreate +* paramenter to use to create the clock +* +* @param PHANDLE ClockHandle +* The new handle +* +* @return +* Return NTSTATUS error code or sussess code. +* +* @remarks. +* none +* +*--*/ +KSDDKAPI +NTSTATUS +NTAPI +KsCreateClock(HANDLE ConnectionHandle, + PKSCLOCK_CREATE ClockCreate, + PHANDLE ClockHandle) { - return STATUS_SUCCESS; + return KsiCreateObjectType( ConnectionHandle, + KSSTRING_Clock, + (PVOID) ClockCreate, + sizeof(KSCLOCK_CREATE), + GENERIC_READ, + ClockHandle); } -KSDDKAPI NTSTATUS NTAPI -KsCreateTopologyNode( - HANDLE ParentHandle, - PKSNODE_CREATE NodeCreate, - ACCESS_MASK DesiredAccess, - PHANDLE NodeHandle) +/*++ +* @name KsCreatePin +* @implemented +* +* The function KsCreatePin passes a connection request to device and create pin instance +* +* @param HANDLE FilterHandle +* handle of the filter initiating the create request +* +* @param PKSPIN_CONNECT Connect +* Pointer to a KSPIN_CONNECT structure that contains parameters for the requested connection. +* This should be followed in memory by a KSDATAFORMAT data structure, describing the data format +* requested for the connection. + +* @param ACCESS_MASK DesiredAccess +* Desrided access +* +* @param PHANDLE ConnectionHandle +* connection handle passed +* +* @return +* Return NTSTATUS error code or sussess code. +* +* @remarks. +* The flag in PKSDATAFORMAT is not really document, +* to find it u need api mointor allot api and figout +* how it works, only flag I have found is the +* KSDATAFORMAT_ATTRIBUTES flag, it doing a Align +* of LONLONG size, it also round up it. +* +*--*/ + +KSDDKAPI +NTSTATUS +NTAPI +KsCreatePin(HANDLE FilterHandle, + PKSPIN_CONNECT Connect, + ACCESS_MASK DesiredAccess, + PHANDLE ConnectionHandle) { - return STATUS_SUCCESS; + ULONG BufferSize = sizeof(KSPIN_CONNECT); + PKSDATAFORMAT DataFormat = ((PKSDATAFORMAT) ( ((ULONG)Connect) + ((ULONG)sizeof(KSPIN_CONNECT)) ) ); + + if (DataFormat->Flags & KSDATAFORMAT_ATTRIBUTES) + { + BufferSize += (ROUND_UP(DataFormat->FormatSize,sizeof(LONGLONG)) + DataFormat->FormatSize); + } + + return KsiCreateObjectType(FilterHandle, + KSSTRING_Pin, + Connect, + BufferSize, + DesiredAccess, + ConnectionHandle); + +} + +/*++ +* @name KsCreateTopologyNode +* @implemented +* +* The function KsCreateTopologyNode creates a handle to a topology node instance +* +* @param HANDLE ParentHandle +* Handle to parent when want to use when we created the node on +* +* +* @param PKSNODE_CREATE NodeCreate +* topology node parameters to use when it is create +* +* @param ACCESS_MASK DesiredAccess +* Desrided access +* +* @param PHANDLE NodeHandle +* Location for the topology node handle +* +* @return +* Return NTSTATUS error code or sussess code. +* +* @remarks. +* none +* +*--*/ +KSDDKAPI +NTSTATUS +NTAPI +KsCreateTopologyNode(HANDLE ParentHandle, + PKSNODE_CREATE NodeCreate, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE NodeHandle) +{ + return KsiCreateObjectType( ParentHandle, + KSSTRING_TopologyNode, + (PVOID) NodeCreate, + sizeof(KSNODE_CREATE), + DesiredAccess, + NodeHandle); +} + + +BOOL +APIENTRY +DllMain(HANDLE hModule, DWORD ulreason, LPVOID lpReserved) +{ + switch (ulreason) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + + return TRUE; } diff --git a/reactos/dll/directx/ksuser/ksuser.def b/reactos/dll/directx/ksuser/ksuser.def index 7097d6dbd22..869a9c27119 100644 --- a/reactos/dll/directx/ksuser/ksuser.def +++ b/reactos/dll/directx/ksuser/ksuser.def @@ -1,7 +1,6 @@ LIBRARY ksuser.dll EXPORTS -KsCreateAllocator -KsCreateClock -KsCreatePin -KsCreateTopologyNode -; EOF + KsCreateAllocator@12 + KsCreateClock@12 + KsCreatePin@16 + KsCreateTopologyNode@16 diff --git a/reactos/dll/directx/ksuser/ksuser.h b/reactos/dll/directx/ksuser/ksuser.h new file mode 100644 index 00000000000..4bb54502306 --- /dev/null +++ b/reactos/dll/directx/ksuser/ksuser.h @@ -0,0 +1,15 @@ + + + +#define _KSDDK_ +#include +#include + + + +#include +#include + + + + diff --git a/reactos/dll/directx/ksuser/ksuser.rbuild b/reactos/dll/directx/ksuser/ksuser.rbuild index d8dbfab3494..c5f9d618e39 100644 --- a/reactos/dll/directx/ksuser/ksuser.rbuild +++ b/reactos/dll/directx/ksuser/ksuser.rbuild @@ -1,15 +1,13 @@ - . 0x600 0x600 - advapi32 + advapi32 kernel32 ntdll ksuser.c ksuser.rc - \ No newline at end of file diff --git a/reactos/dll/directx/ksuser/ksuser.rc b/reactos/dll/directx/ksuser/ksuser.rc index ac77b78ecdd..d59a6ec166e 100644 --- a/reactos/dll/directx/ksuser/ksuser.rc +++ b/reactos/dll/directx/ksuser/ksuser.rc @@ -1,12 +1,10 @@ + #define REACTOS_VERSION_DLL -#define REACTOS_STR_FILE_DESCRIPTION "ReactOS User CSA Library\0" -#define REACTOS_STR_INTERNAL_NAME "ksuser\0" +#define REACTOS_STR_FILE_DESCRIPTION "User CSA Library\0" +#define REACTOS_STR_INTERNAL_NAME "ksuser.dll\0" #define REACTOS_STR_ORIGINAL_FILENAME "ksuser.dll\0" -#define REACTOS_FILEVERSION 5,3,0,900 -#define REACTOS_STR_FILE_VERSION "5.3.0.900" -#define REACTOS_PRODUCTVERSION 5,3,0,900 -#define REACTOS_STR_PRODUCT_VERSION "5.3" +#include #include