Сервер Web своими руками. Язык HTML, приложения CGI и ISAPI



         

Приложение FILEUPL - часть 8


   

    // Устанавливаем указатель текущей позиции

    // в буфере после скопированных данных

    nBufferPos = lpECB->cbAvailable;

 

    // Определяем, сколько данных нужно считать

    // дополнительно с помощью функции ReadClient

    nBytesToCopy = lpECB->cbTotalBytes - lpECB->cbAvailable;

        

    // Если не все данные находятся в буфере предварительного

    // чтения, запускаем цикл копирования оставшихся данных

    if(nBytesToCopy > 0)

    {

      while(1)

      {

        // Читаем очередную порцию данных в текущую

        // позицию буфера

        lpECB->ReadClient(lpECB->ConnID,

           (LPVOID)((LPSTR)lpTemp + nBufferPos), &cbReaded);

             

        // Уменьшаем содержимое переменной nBytesToCopy,

        // в которой находится размер непрочитанных данных

        nBytesToCopy -= cbReaded;

        // Продвигаем указатель текущей позиции в буфере

        // на количество прочитанных байт данных

        nBufferPos   += cbReaded;

             

        // Когда копировать больше нечего, прерываем цикл

        if(nBytesToCopy <= 0l)

          break;

      }

    }

    // В случае успешного копирования возвращаем

    // адрес буфера с прочитанными данными

    return lpTemp;

  }

 

  // Если данных для чтения нет, завершаем

  // работу с установкой кода ошибки

  else

  {

    *nStatus = HSE_STATUS_ERROR;

    // В случае ошибки вместо адреса буфера

    // с прочитанными данными возвращается

    // значение NULL

    return NULL;

  }

}

// =============================================================

// Функция GetMIMEBoundary

// Поиск разделителя в буфере.

// Параметры:

//   lpDataMIME - адрес буфера с данными MIME

//   lpBuffer   - адрес буфера для записи разделителя

//   dwBufSize  - размер буфера с данными MIME

// =============================================================

BOOL GetMIMEBoundary(LPVOID lpDataMIME, LPSTR lpBuffer, DWORD dwBufSize)




Содержание  Назад  Вперед