Ткните носом где M$-овцы об этом явно говорят. Пол-дня прое***** пока не нашел, что перед вызовом CreateFileA (и я так подозреваю многих других API)нужно сбрасывать этот чертов D. Внутри CreateFileA, перед вызовом CreateFileW, идет подготовка UNICODE строки для CreateFileW, для чего вызывается ntdll.RtlInitAnsiString, в котором подсчет длины имени файла идет с помощью rep scasb без предварительного cld! Это ж надо...
на вскидку - wsprintf, HeapAlloc... короче всегда надо сбрасывать, ато потом глюков не оберешься Плохо ищешь: Windows Calling Conventions This documentation presents the syntax of most functions in C-language notation. All such functions are assumed to be declared as FAR PASCAL functions, and Windows will call these functions as such. In general, exported functions in a device driver must execute the standard Windows prolog on entry and epilog on exit. The following list highlights the calling conventions: - Set the DS register to the selector of the driver's automatic data segment. - Save and restore the following registers if used: SS, SP, BP, SI, DI, and DS. - Clear the direction flag if it has been set or modified. - Place 16-bit return values in the AX register; 32-bit values in the DX:AX register pair. - Execute a FAR return. Windows pushes all parameters on the stack in a left to right order (the last parameter shown in the function syntax is closest to the stack pointer). Windows also passes pointer parameters as 32-bit quantities, pushing the selector first then the offset. This allows exported functions to use the lds or les instructions to retrieve pointers from the stack.
Мдя, пора в фак заносить такое, регулярно пионеры натыкаются. ЗЫ: Лично я в свое время потратил пол деня чтобы найти почему у меня все MessageBox'ы стали с кнопками внутрь Оказалось в одном месте с дуру написал push word хххх. с тех пор знаю что винда не любит терять выравнивание стэка до 4х байт =)
а мне пришлось написать масросы inv_win и inva_win взамен invoke , которые восстанавливают ebx, esi, edi и cld, потому что изменить большинство кода было не реально...
cmp ax,CBN_SELCHANGE je ... cmp ax,LBN_SELCHANGE je ... Почему же не выполняется второе условие думал сегодня я пока не посматрел в windows.inc