Реферат: Winlogon notification package. Теория и практика
// Задаем название log-файла
WCHAR fName[] = L"C:\\log.txt";
WCHAR buf[ 1024 ];
// Готовим строку для логов. Стоит отметить что если бы
// был обьявлен макрос STRICT, вывод hDesktop
// необходимо было бы делать по другому.
swprintf(buf, L"Event: %s, User: %s, Domain: %s,"
L"Window station: %s, User token 0x%p,"
L"Desktop 0x%p\r\n", pStrEventName,
pInfo->UserName, pInfo->Domain, pInfo->WindowStation,
pInfo->hToken, pInfo->hDesktop);
// Открываем log-файлдлязаписи.
HANDLE hFile = CreateFileW(fName, GENERIC_WRITE,
FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwWritten;
// Если такого файла нет, или случилась какая-то другая
// ошибка, пробуем создать новый файл.
if (hFile == INVALID_HANDLE_VALUE)
{
hFile = CreateFileW(fName, GENERIC_WRITE,
FILE_SHARE_READ, NULL, CREATE_NEW,
FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
// Если файл не создался, сообщаем пользователю
// системным звуком о возникновении ошибки.
::MessageBeep(MB_ICONASTERISK);
return;