none
[resolu] Windows Mobile 6 et accès à un share réseau RRS feed

  • Question

  • Bonjour,

    pour une application de mobilité (windows Mobile 6), j'ai besoin de faire des copies de fichiers générés sur le PDA vers un espace réseau sur un serveur. Le fonctionnement est le suivant :

    - l'opérateur se "balade" avec son PDA saisi et récupère les informations qu'il a besoin au fur et à mesure. Chaque information est mise dans un fichier localement sur le PDA.

    - Un thread va copier dès que le réseau est disponible les fichiers sur un serveur distant. La connexion réseau n'est pas toujours disponible (copie en Wifi).

     

    Ma problèmatique : je n'arrive pas à connecter le lecteur réseau. J'ai lu des informations sur WnetAddconnection3, j'ai trouver des classes tout faites, rien n'y fait, je n'y arrive pas. Quelqu'un aurait-il un code simple et prêt pour réaliser cela ?

     

    Voici déjà ce que j'ai réalisé (et qui ne fonctionne pas bien sur, erreur de retour : UNKNOWN ERROR, 1222) :

     

    public
    
    FormInventaire()

    {

    InitializeComponent();

    }



    private
    void
    FormInventaire_Load(object
    sender, EventArgs e)

    {

    String ShareName = @"\\192.168.1.12\datas"
    ;

    NetCredentials.NETRESOURCEA netRessMgd = new
    NETRESOURCEA();



    netRessMgd.localName = "data"
    ;

    netRessMgd.remoteName = ShareName;

    netRessMgd.type = ResourceType.RESOURCETYPE_DISK;

    netRessMgd.provider = "provider"
    ;

    netRessMgd.usage = ResourceUsage.RESOURCEUSAGE_ALL;

    netRessMgd.displayType = ResourceDisplayType.RESOURCEDISPLAYTYPE_SHARE;



    unsafe


    {

    NetCredentials.UnmanagedNETRESOURCEA netRessource = ToUnmanagedRessource(netRessMgd);



    int
    res = NetCredentials.Credentials.WNetAddConnection3(IntPtr.Zero, ref
    netRessource, "mypass"
    , "sylvain"
    , 0);

    string
    s = WinAPIErrorCodes.WinAPIErrorCodes.Interpretation(res);



    }



    }



    private
    NetCredentials.UnmanagedNETRESOURCEA ToUnmanagedRessource(NetCredentials.NETRESOURCEA netRessMg)

    {

    UnmanagedNETRESOURCEA result = new
    UnmanagedNETRESOURCEA();



    char
    [] localNameBuffer = MarshalHelper(netRessMg.localName);

    char
    [] remoteNameBuffer = MarshalHelper(netRessMg.remoteName);

    char
    [] commentBuffer = MarshalHelper(netRessMg.comment);

    char
    [] providerBuffer = MarshalHelper(netRessMg.provider);



    unsafe


    {

    fixed
    (char
    *

    pLocalName = localNameBuffer,

    pRemoteName = remoteNameBuffer,

    pComment = commentBuffer,

    pProvider = providerBuffer

    )

    {

    result.lpLocalName = pLocalName;

    result.lpRemoteName = pRemoteName;

    result.lpComment = pComment;

    result.lpProvider = pProvider;

    result.type = netRessMg.type;

    }

    }



    return
    result;

    }



    private
    char
    [] MarshalHelper(string
    s)

    {

    s = s + "\0"
    ;

    return
    s.ToCharArray();

    }

     

    Si besoin, je peux publier la classe NetCredentials.Credentials

     

    Merci de votre aide.

     

    mercredi 8 décembre 2010 11:23

Réponses