inc/wmdrmfileserverclient.h
changeset 0 95b198f216e5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/wmdrmfileserverclient.h	Thu Dec 17 08:52:27 2009 +0200
@@ -0,0 +1,162 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Client definitions
+*
+*/
+
+
+#ifndef __WMDRMFILESERVERCLIENT_H
+#define __WMDRMFILESERVERCLIENT_H
+
+#include <e32std.h>
+
+// Name of the WMDRM file server executable
+_LIT( KWmDrmFileServerName, "!wmdrmfileserver.exe" );
+
+// Name of the WMDRM file server process
+_LIT( KWmDrmFileServerImg, "wmdrmfileserver" );
+
+// Location of the WMDRM file server root folder
+_LIT( KStoreRoot, "%c:\\sys\\private\\2000B180" );
+
+/* Interface to the WMDRM file server, which manages files in protected location.
+ * Clients need DRM capability to access all functions.
+ */
+
+class RWmDrmFileServerClient: public RSessionBase
+	{
+public:
+
+    /* Connect to the server.
+     *
+     * @capability DRM
+     * @return KErrNone if successful
+     */
+	IMPORT_C TInt Connect();
+    
+
+    /* Open the given file under the file server root.
+     *
+     * @capability DRM
+     * @param aFilename File to open
+     * @return  KErrNone if successful, KErrNotFound if the file does not exist,
+     *          KErrArgument if the file name is not valid
+     */
+    IMPORT_C TInt Open( const TDesC& aFilename );
+    
+
+    /* Closes an open file.
+     */
+    IMPORT_C void CloseFile();
+
+
+    /* Creates a file under the file server root and opens it.
+     *
+     * @capability DRM
+     * @param aFilename File to create
+     * @return KErrNone if successful, KErrArgument if the file name is not valid,
+     *         KErrDiskFull if system drive doesn't have enough free space
+     */
+    IMPORT_C TInt Create( const TDesC& aFilename );
+
+
+    /* Read the whole content of the file into a buffer
+     *
+     * @capability DRM
+     * @param aBuffer   Buffer for file content
+     * @return  KErrNone if successful, KErrNotReady if the file is not open,
+     *          KErrBadDescriptor if not enough space is available in the buffer.
+     */
+    IMPORT_C TInt Read( TDes8& aBuffer );
+
+    /* Replaces the file content with a buffer, truncating the file if needed.
+     *
+     * @capability DRM
+     * @param aBuffer   New file content
+     * @return  KErrNone if successful, KErrNotReady if the file is not open,
+     *          KErrDiskFull if system drive doesn't have enough free space
+     */
+    IMPORT_C TInt Write( const TDesC8& aBuffer );
+
+    /* Returns the size of the currently open file
+     *
+     * @capability DRM
+     * @param aSize Output parameter for the size
+     * @return KErrNone if successful, KErrNotReady if the file is not open
+     */
+    IMPORT_C TInt Size( TInt& aSize );
+
+    /* Deletes a given file under the store root.
+     *
+     * @capability DRM
+     * @param aFilename File to delete
+     * @return  KErrNone if successful, KErrArgument if the file name is not valid
+     */
+    IMPORT_C TInt Delete( const TDesC& aFilename );
+
+    /* Checks whether a file is currently opened for this session.
+     *
+     * @capability DRM
+     * @return  ETrue if a file is open, EFalse otherwise
+     */
+    IMPORT_C TBool IsOpen();
+
+
+    /* Creates a complete path under the file server root, including all path
+     * components.
+     *
+     * @capability DRM
+     * @param aPath             Path to create
+     * @param aCreateIfMissing  Flag indicating whether the path should be created if
+     *                          it doesn't exist
+     * @return KErrNone if successful, KErrArgument if the file name is not valid
+     *         KErrDiskFull if system drive doesn't have enough free space
+     */
+    IMPORT_C TInt MkDirAll( const TDesC& aPath, TBool aCreateIfMissing = ETrue );
+
+    /* Remove a complete path including all contents.
+     *
+     * @capability DRM
+     * @param aPath Path to remove
+     * @return KErrNone if successful, KErrArgument if the file name is not valid
+     */
+    IMPORT_C TInt RmDirAll( const TDesC& aPath );
+
+    /* Remove the last directory in a path, if the last directory is empty.
+     *
+     * @capability DRM
+     * @param aPath 
+     * @return KErrNone if successful, KErrArgument if the file name is not valid
+     */
+    IMPORT_C TInt RmDir( const TDesC& aPath );
+    
+    
+    /* Updates the secure time, only callable by DRM Rights Server
+     *
+     * @capability DRM
+     * @return  KErrNone if the operation succeeds
+     *          Symbian OS error code if an error occurs
+     */    
+    IMPORT_C TInt UpdateSecureTime( TTime& aHomeTime, TTime& aUTCTime );
+    
+    /* Delete all the rights
+     *
+     * @capability DRM
+     * @return  KErrNone if successful
+     */
+    IMPORT_C TInt DeleteRights();
+    
+	};
+
+#endif