| Platform SDK: Network Management | 
Windows 95/98: The following code sample demonstrates how to change the parameters associated with a network share using a call to the NetShareSetInfo function.
The sample uses the following basic steps to change the remark associated with a network share:
The code also allocates and deallocates the memory required for both buffers.
#include <stdio.h>
#include <windows.h> 
#include <svrapi.h>
int main(int argc, char FAR * argv[])
{
   char FAR * pszServerName = NULL;
   char FAR * pszNetName = NULL;
   short nLevel = 50;
   struct share_info_50* pBuf = NULL;
   struct share_info_50* pBufNew = NULL;
   unsigned short cbBuffer;
   unsigned short nTotalAvail;
   NET_API_STATUS nStatus;
   //
   // ServerName can be NULL to indicate the local computer.
   //
   if ((argc < 3) || (argc > 4))
   {
      printf("Usage: %s [\\\\ServerName] ShareName Comment\n", argv[0]);
      exit(1);
   }
   if (argc == 4)
      pszServerName = argv[1];
   // Note that for Win9x peer servers,
   //   the share name needs to be uppercase.
   //
   pszNetName = argv[argc-2];
   // Call the NetShareGetInfo function once to determine the 
   //   total size needed for the first buffer.
   cbBuffer = 0;
   nStatus = NetShareGetInfo(pszServerName,
                             pszNetName,
                             nLevel,
                             (char FAR *)pBuf,
                             cbBuffer,
                             &nTotalAvail);
   //
   // Allocate the memory required for the first buffer.
   //
   cbBuffer = nTotalAvail;
   pBuf = malloc(cbBuffer);
   if (pBuf == NULL)
      printf("No memory\n");
   //
   // Call NetShareGetInfo a second time to retrieve the 
   //  information, specifying information level 50.
   //
   nStatus = NetShareGetInfo(pszServerName,
                             pszNetName,
                             nLevel,
                             (char FAR *)pBuf,
                             cbBuffer,
                             &nTotalAvail);
   //
   // If the call succeeds, allocate the memory required 
   //   for a second buffer. 
   //
   if (nStatus == NERR_Success)
   {
      pBufNew = malloc(cbBuffer);
      if (pBufNew == NULL)
         printf("No memory\n");
     //
     // Copy the first buffer to the second buffer. 
     //   This is necessary to prevent resetting other share
     //   information when you call NetShareSetInfo.
     //
     CopyMemory(pBufNew, pBuf, cbBuffer);
     //
     // Assign a new value to the comment 
     //  associated with the share. 
     //
     strcpy(pBufNew->shi50_remark, argv[argc-1]);
      //
      // Call NetShareSetInfo to make changes, specifying
      //   PARMNUM_ALL to reset all information.
      //
      nStatus = NetShareSetInfo(pszServerName,
                                pszNetName,
                                nLevel,
                                (char FAR *)pBufNew,
                                cbBuffer,
                                PARMNUM_ALL);
      //
      // Process errors and 
      //  free the memory allocated for the second buffer.
      //
      if (nStatus != NERR_Success)
          fprintf(stderr, "A system error has occurred (NetShareSetInfo): %d\n", nStatus);
      if (pBufNew != NULL)
         free(pBufNew);
   }
   else
      fprintf(stderr, "A system error has occurred (NetShareGetInfo): %d\n", nStatus);
   //
   // Free the memory allocated for the first buffer.
   //
   if (pBuf != NULL)
      free(pBuf);
   return 0;
}