Сервис (служба) для виндовс
Есть небольшая программка, мониторит сетевую активность пользователя. Собственно DLL, находящаяся в сетевом стеке, которая по IPC гонит информацию о том где был юзер. Надо написать сервис, принимающий эту инфу и пишущий ее в файл. Для облегчения задачи могу предоставить код сервиса (в принципе подобные вещи находятся в инете). Проблемы, которые надо решить:
1. Стабильная работа.
2. Запись в файл без всяких дедлоков и прочих проблем. Чтобы данные писались в файл, не блокируя друг друга. Порядок записи не так важен, достаточно время и адрес записать. То есть, если сервису одновременно сваливается 50 запросов, он должен их нормально записать.
3. Размер файла - через день работы файл может вырасти до десятков мегабайт. Тут приветствуются самостоятельные идеи - разбить на части или еще как-нибудь. Возможно дописывание в конец большого файла происходит так же быстро, как и у маленького. Не знаю.
4. Файл надо блокировать от просмотра пользователем, искажения.
Файловая система НТФС, права на файл можно выставить, если надо.
Можете вообще предложить свое решение, главное - принять инфу и сохранить ее где-то. Хранить надо довольно долго, месяц-два.
Дополняю информацию, хотя не знаю чем это поможет. Отправка информации происходит так:
ДЛЛ в dllmain при DLL_PROCESS_ATTACH создает трубу
hPipe = CreateFile(
lpszPipename, // pipe name
GENERIC_READ | // read and write access
GENERIC_WRITE,
0, // no sharing
NULL, // default security attributes
OPEN_EXISTING, // opens existing pipe
0, // default attributes
NULL); // no template file
Далее в нее пишутся данные
fSuccess = WriteFile(
hPipe, // pipe handle
strURL.c_str(), // message
cbToWrite, // message length
&cbWritten, // bytes written
NULL); // not overlapped
Задача сервиса поймать эти данные и записать на диск. Все в рамках одной машины.