docs: def _list_directories_and_files(self, share_name, directory_name=None, 
                                     marker=None, max_results=None, timeout=None):
          '''
          Returns a list of the directories and files under the specified share.
  
          :param str share_name:
              Name of existing share.
          :param str directory_name:
              The path to the directory.
          :param str marker:
              A string value that identifies the portion of the list
              to be returned with the next list operation. The operation returns
              a next_marker value within the response body if the list returned was
              not complete. The marker value may then be used in a subsequent
              call to request the next set of list items. The marker value is
              opaque to the client.
          :param int max_results:
              Specifies the maximum number of files to return,
              including all directory elements. If the request does not specify
              max_results or specifies a value greater than 5,000, the server will
              return up to 5,000 items. Setting max_results to a value less than
              or equal to zero results in error response code 400 (Bad Request).
          :param int timeout:
              The timeout parameter is expressed in seconds.
          '''
          _validate_not_none('share_name', share_name)
          request = HTTPRequest()
          request.method = 'GET'
          request.host = self._get_host()
          request.path = _get_path(share_name, directory_name)
          request.query = [
              ('restype', 'directory'),
              ('comp', 'list'),
              ('marker', _to_str(marker)),
              ('maxresults', _int_to_str(max_results)),
              ('timeout', _int_to_str(timeout)),
          ]
  
          response = self._perform_request(request)
          return _convert_xml_to_directories_and_files(response)