Чтобы добавлять сообщения и комментарии, .

@mabu:
mabu

Эта функция открывает указанный раздел реестра и возвращает ERROR_SUCCESS при успешном выполнении.Как вообще перевести «ERROR_SUCCESS»?

@mabu:
mabu

Попытался слёту написать функцию чтения строки из текстового файла, но оказалось, что это как‐то нетривиально. Использовал ReadFile, она читает определённое количество байт в буфер. В этом буфере ещё нужно найти символы \r\n и получить строку до них, а если в этом буфере не будет символов переноса строки, то читать данные из файла ещё. Хотел использовать под буфер статическую память, но понял, что может быть переполнение буфера, если строки в файле будут очень длинными.
Что будет, если текстовый файл будет размером в 200 мегабайт и состоять всего из одной строки? Статический буфер для этого не подходит, придётся выделять память из кучи.

@mabu:
mabu

Небольшие строки разбивать по пробелам можно функцией CommandLineToArgvW из библиотеки shell32.dll.

@mabu:
mabu

В функции GetAddrInfoW второй параметр нельзя оставлять NULL.

@mabu:
mabu

Какой коварный подвох. Функция lstrcpyn(destination, source, iMaxLength) копирует из источника в приёмник не количество символов iMaxLength, а iMaxLength — 1, так как один символ использует под нулевой.

@zxc-by:
zxc-by

у меня еще была книжка "верма вин32 апи" — компактный концентрированный ад

@sss:
sss

у кого нибудь boost::process работает на windows с последними версиями boost ?

@lovesan:
lovesan

немного мыслей про C++ и COM
love5an.livejournal.com

@d1mk0:
d1mk0

хочу разработать файловый менеджер для венды, суть такова:
написано на си с вызовами WinAPI (компилятор TCC), малый размер, мгновенный запуск, охренительная скорость, объединён с удобной консолью (возможности cmd + свои команды).

интерфейс навигации по папкам самый примитивный, ч/б, самописный
консоль красивая, цветная

также хотелось бы написать свою оболочку для программиста (замену explorer.exe): фичи те же (скорость, малый размер) + настраиваемость ВСЕХ горячих клавиш, поддержка нескольких рабочих столов. неперекрывающийся оконный менеджер (по типу awesome, subtle, i3 и xmonad в linux)

всё, что есть, оно какое-то тормозное и перегруженное

@lovesan:
lovesan

А вообще — WinRT это практически тот же старый добрый(или злой, кому как) COM, подсахаренный в парочке мест, местами переименованный, а где надо — урезанный.

@lovesan:
lovesan

Блядь, ну не знаю. Это всё дело заебись выглядит под планшеты и мобильники, но блядь, под десктопы и ноуты — пиздец.

@lovesan:
lovesan

Что-то мне кажется, что с WinRT MS катит винду, и катится сам, в какую-то глубокую задницу.

@k0st1x:
k0st1x

для меня стало открытием, что windows для генерации уникальных идентификаторов (guid'ов) делает remote procedure call на сервер, который гарантированно вернет идентификатор уникальный для локальной подсети.

@lovesan:
lovesan

Добавил в D3DU пару вещей:
love5an.livejournal.com

@sss:
sss

*CreateProcess АААААААРРРРРРРРРРРРГГГГГГГГГГГХХХХХХХХХХХ!!!!!!!!!!!!!

@lovesan:
lovesan

Написал тут недавно — библиотека-звонилка для винды. Обертка над RAS API, пока что может просто поднимать соединение по имени, закрывать, и сообщать о том, существует ли оно уже. Для VPN, диалапа, и пр.

Может кому надо:
github.com

@folex:
folex

from /dev/windows/private/security/msv_sspi/kernel/krnlapi.cxx :
void
SspGenCheckSum(
IN PSecBuffer pMessage,
OUT PNTLMSSP_MESSAGE_SIGNATURE pSig
)
/*++
RoutineDescription:
Generate a crc-32 checksum for a buffer
Arguments:

Return Value:
Notes: This was stolen from net\svcdlls\ntlmssp\client\sign.c ,
routine SspGenCheckSum. It's possible that
bugs got copied too

--*/

@lovesan:
lovesan

Реализация UNWIND-PROTECT на Windows.

с примерами кода на NASM

love5an.livejournal.com

@sss:
sss

кто нибудь знает как сделать чтобы экспорты при сборке в gcc были такие же как при сборке студией ?

@lovesan:
lovesan

Модные кнопки для win32 приложений на CL, или "как включить Visual Styles для лисповых приложений, чтобы наша программа не выглядела как на win2k":
love5an.livejournal.com

@Elemir:
Elemir

У меня возникает ощущение, что когда писалось Win Api, то в M$ все кодеры бастовали и дизайнерам пришлось писать заголовочники самим.

@borman:
borman

Жуйк, а что рекомендуешь почитать коротенького как введение в винапи (желательно, в современном состоянии), чтобы получить общее представление?

@AKa:
AKa

typedef struct _DnsRecord {
  DNS_RECORD *pNext;
  PWSTR      pName;
  WORD       wType;
  WORD       wDataLength;
  union {
    DWORD            DW;
    DNS_RECORD_FLAGS S;
  } Flags;
  DWORD      dwTtl;
  DWORD      dwReserved;
  union {
    DNS_A_DATA      A;
    DNS_SOA_DATA    SOA, Soa;
    DNS_PTR_DATA    PTR, Ptr, NS, Ns, CNAME, Cname, DNAME, Dname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;
    DNS_MINFO_DATA  MINFO, Minfo, RP, Rp;
    DNS_MX_DATA     MX, Mx, AFSDB, Afsdb, RT, Rt;
    DNS_TXT_DATA    HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
    DNS_NULL_DATA   Null;
    DNS_WKS_DATA    WKS, Wks;
    DNS_AAAA_DATA   AAAA;
    DNS_KEY_DATA    KEY, Key;
    DNS_SIG_DATA    SIG, Sig;
    DNS_ATMA_DATA   ATMA, Atma;
    DNS_NXT_DATA    NXT, Nxt;
    DNS_SRV_DATA    SRV, Srv;
    DNS_NAPTR_DATA  NAPTR, Naptr;
    DNS_OPT_DATA    OPT, Opt;
    DNS_DS_DATA     DS, Ds;
    DNS_RRSIG_DATA  RRSIG, Rrsig;
    DNS_NSEC_DATA   NSEC, Nsec;
    DNS_DNSKEY_DATA DNSKEY, Dnskey;
    DNS_TKEY_DATA   TKEY, Tkey;
    DNS_TSIG_DATA   TSIG, Tsig;
    DNS_WINS_DATA   WINS, Wins;
    DNS_WINSR_DATA    WINSR, WinsR, NBSTAT, Nbstat;
    DNS_DHCID_DATA    DHCID;
  } Data;
} DNS_RECORD, *PDNS_RECORD;

@Elemir:
Elemir

Наткнулся на такую штуку — msdn.microsoft.com Возникает вопрос, что мне нажать в программе, чтобы изменить win32 file namespace?

@k0st1x:
k0st1x

блин, в винде столько говна )) только что узнал, что в стандартный winapi входит функционал разпознавания образов для логина в систему "Windows Biometric Framework"

@lovesan:
lovesan

Большой постинг с примером написания Out-of-Process COM-сервера на Common Lisp, C# и C++
Там же — мысли о COM, недостатках CCW из .NET и уебищности C++

love5an.livejournal.com

@Dudraug:
Dudraug

Жуйк, подскажи как создать через винапи битмап из файла, структуру. Мне нужен указатель на какой-то битмап, походу винапишный... Не спрашивай, чужой быдло код, потому я даже не уверен что мне надо.

@lovesan:
lovesan

Написал небольшой гайд по созданию приложений на лиспе под Windows без Чорной Консоли:

love5an.livejournal.com

@lovesan:
lovesan

Начал работу на LDX.

Вот буквально сегодня накатал биндинги к DXGI. Накатал, надо сказать, очень быстро, буквально за пару часов.
А все почему? Макросы.
love5an.livejournal.com

Пользуясь случаем, напоминаю что OpenGL — говно.

@lovesan:
lovesan

Рационализация моей работы с COM. Необходимая, наверное, вещь, раз тут один долбоеб уже заикнулся об этом.

Да, может OLE и протухло. Может, на чистом COM/OLE уже никто не пишет.
Но, чуваки, без интерфейса к COM на винде делать вообще нехуй. Совершенно.
Десктопные приложения, игрушки, или даже сервисы, без COM/OLE на винде не написать.

Любой язык, платформа или рантайм, который не принимает в расчет COM, у которого нет качественного интерфейса к этому — на винде нежизнеспособен и является как максимум академической игрушкой, а обычно же — студенческой поделкой.

@lovesan:
lovesan

Продолжение про управление памятью и апартаментами COM в Doors: love5an.livejournal.com
Дописал таки до приличного состояния привязку к GC.
У меня теперь весь COM — managed, да.

@lovesan:
lovesan

Как я в Doors управляю COM-апартаментами: love5an.livejournal.com
Большой подробный пост, с картинками.

@lovesan:
lovesan

Удалось запустить Local(Out-of-Process) COM-сервер на лиспе:
love5an.livejournal.com

IPC через COM на лиспе это очень прикольно, надо сказать.

@lovesan:
lovesan

Почти допилил биндинг к Windows USER(user32.dll), скоро закоммичу в Doors. Вот тут пример простенького окошка и кода, который его рисует: love5an.livejournal.com

@lovesan:
lovesan

Все-таки, DWM очень интересно устроен.
Очень интересно позволяет себя абьюзить:

img218.imageshack.us
синее там это окно.

Код:
pastebin.com

Обращаю внимание — Aero выключен. И мы там вообще не используем никакие виндовые средства для регуляции прозрачности.
Просто рисуем в HWND через Direct3D:

device->OMSetRenderTargets(1, &backBufferRTV, NULL);

FLOAT clearColor[4] = { 0.0f, 0.2f, 1.0f, 0.4f };
device->ClearRenderTargetView(backBufferRTV, clearColor);

swapChain->Present(0, 0);

Окно там обычное:
WS_POPUP // просто окошко, "без всего"
WS_EX_COMPOSITED // указание оконному менеджеру на то, что контролы в окне рисуются "bottom-to-top"(т.н. "алгоритмом художника"), по очереди

Тем не менее, у нас там не плотный синий квадрат, а вот такая прозрачная фиговина. Получается, мы рисуем прямо в текстуру, которую DWM использует для отображения окна.

А разгадка одна:

MARGINS m = {-1};
DwmExtendFrameIntoClientArea(hwnd, &m);

@lovesan:
lovesan

Накатал сегодня ровно 1000 строк в Doors(пока не закоммитил).
User32->Windows: paste.lisp.org
Заебался страшно.

@zhu:
zhu

не понимаю, почему виндовые программеры менее ценны, чем линуксовые. бля, ребята, да за то, что чувак разобрался с WinApi, запомнил все говнонюансы типа функций (не помню дословно) ChangeServiceParam() и ChangeServiceParam2(), или умеет работать с шикарными говнотипами типа LPWTSTR, — ему памятник поставить нужно. Полное отсутствие линуксовой логики, стройности и скромности реализации. Это ж зубриловка сплошная. Буэээээээ.

@lovesan:
lovesan

Полтора месяца я ебался с кривым Clozure CL, который поддерживает метаобъектный протокол CLOS через задницу, и то кое-как.

Но, я таки его одолел, и по этому случаю закоммитил в Doors: github.com
Теперь на CCL тоже можно писать COM-компоненты, и дергать COM-интерфейсы и даже целые COM-классы.
Еще я тестировал на clisp и SBCL, там тоже все хорошо работает.

Пример тут, например: github.com
Ясно видна сила MOP — класс hello-world-object является инстансом класса factory-class, а последний является инстансом и одновременно наследником com-class. А все три метаобъекта классов, и все их экземпляры, являются инстансами com-object.
com-обжекты можно дичайше круто передавать в чужой код, и чужой код, на каком-нибудь C++ или C#, будет дергать через виртуальные функции интерфейсов родные лисповые обобщенные фунцкции, которые мы писали на лиспе.

Метаклассы это вообще круто, они дичайше абстрагируют и очень сильно помогают писать меньше кода.

@lovesan:
lovesan

Все-таки, только пописав немного на плюсах начинаешь понимать, как охуительно прекрасна объектная система Common Lisp.

Накатал тут, для своих экспериментов с Direct3D и Direct2D, небольшую библиотеку-надстройку над winapi на плюсцах, которая абстрагирует Топлевел-окошко в event-driven стиле.

Планирую ее потом переписать на коммонлиспе, сделать евенты полноценными, и вообще, расширить и улучшить всячески, разными контролами и так далее, до подобия WPF.

Но не суть. Суть в том, что я в полной мере почувствовал уебищность, кривоту и неюзабельность плюсов.
Плюсы это невыразимый, блевотный пиздец.

Например, кто догадается — зачем там в классе Window метод Init()?
Второй вопрос — какие последствия это влечет в контексте удобства пользования классом?

SimpleWindows.hpp
pastebin.com

SimpleWindows.cpp
pastebin.com

@lovesan:
lovesan

Вот это ебаный пиздец на 555 строчек — минимально необходимый код на C++ для отрисовки вращающегося кубика с помощью Direct3D 11. Блядь, это просто пиздец. Ну вдуматься — какой-то ебучий вращающийся кубик и какой-нибудь простенький шейдер! 555, блядь, строчек! Кто скажет, что C++ — удобный инструмент, тот пидарас. pastebin.com