SOL9 2.0 Class: NetShare

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * NetShare.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9
// 2009/10/10

#pragma once

#include <sol/nm/NetManager.h>
#include <sol/nm/ShareInfo.h>

namespace SOL {

class NetShare :public NetManager {

public:
    /**
     * Constructor
     */
    NetShare(const wchar_t* server=NULL)
        :NetManager(server)
    {
        
    }

public:
    int enumerate(__inout ShareInfo& shareInfo)
    {
        const wchar_t* serverName= getServerName();
        LPBYTE pbuffer;    
        DWORD entriesRead = 0;
        DWORD totalEntries = 0;
        DWORD resumeHandle = 0;
        
        DWORD level = shareInfo.getLevel();

        NET_API_STATUS rc = NetShareEnum((wchar_t*)serverName,
            level,
              &pbuffer,
              MAX_PREFERRED_LENGTH,
              &entriesRead,
              &totalEntries,
             NULL);//&resumeHandle);

        if (rc == NERR_Success) {        
            shareInfo.setInfo(pbuffer, entriesRead, totalEntries);
        } else {
            printf("Failed to call NetShareEnum: %d\n", rc);
            throw (int)rc;
        }
        return rc;
    }

public:
    int add(__in ShareInfo& shareInfo)
    {
        const wchar_t* serverName= getServerName();

        DWORD level    = shareInfo.getLevel();
        LPBYTE pbuffer = shareInfo.getBuffer();

        NET_API_STATUS rc = NetShareAdd((wchar_t*)serverName, level,
                  pbuffer, NULL);

        if (rc == NERR_Success) {
            ;//OK
        } else {
            printf("Failed to call NetShareAdd: %d\n", rc);
            throw (int)rc;
        }
        return rc;

    }

public:
    int setInfo(__in const wchar_t* netName, __in ShareInfo& shareInfo)
    {
        const wchar_t* serverName = getServerName();

        DWORD level    = shareInfo.getLevel();
        LPBYTE pbuffer = shareInfo.getBuffer();

        NET_API_STATUS rc = NetShareSetInfo((wchar_t*)serverName, (wchar_t*)netName, level,
                  pbuffer, NULL);

        if (rc == NERR_Success) {
            ;//OK
        } else {
            printf("Failed to call NetShareSetInfo: %d\n", rc);
            throw (int)rc;
        }
        return rc;

    }

public:
    int remove(__in const wchar_t* netName)
    {
        const wchar_t* serverName = getServerName();

        NET_API_STATUS rc = NetShareDel((wchar_t*)serverName, (wchar_t*)netName, NULL);

        if (rc == NERR_Success) {
            ;//OK
        } else {
            printf("Failed to call NetShareDel: %d\n", rc);
            throw (int)rc;
        }
        return rc;

    }

};

}

Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.