Как вот таку елку на масм перевести: Код (Text): typedef struct { DWORD dwRequestMicroSecPerFrame; BOOL fMakeUserHitOKToCapture; UINT wPercentDropForError; BOOL fYield; DWORD dwIndexSize; UINT wChunkGranularity; BOOL fUsingDOSMemory; UINT wNumVideoRequested; BOOL fCaptureAudio; UINT wNumAudioRequested; UINT vKeyAbort; BOOL fAbortLeftMouse; BOOL fAbortRightMouse; BOOL fLimitEnabled; UINT wTimeLimit; BOOL fMCIControl; BOOL fStepMCIDevice; DWORD dwMCIStartTime; DWORD dwMCIStopTime; BOOL fStepCaptureAt2x; UINT wStepCaptureAverageFrames; DWORD dwAudioBufferSize; BOOL fDisableWriteCache; UINT AVStreamMaster; } CAPTUREPARMS; не сталкивался с с не особо понимаю смыслы UINT, BOOL.. и про приставки перед параметрами v,f,w...
Код (Text): CAPTUREPARMS STRUCT dwRequestMicroSecPerFrame dd ? fMakeUserHitOKToCapture db ? wPercentDropForError dw ? fYield db ? dwIndexSize dd ? wChunkGranularity dw ? fUsingDOSMemory db ? wNumVideoRequested dw ? fCaptureAudio db ? wNumAudioRequested dw ? vKeyAbort dw ? fAbortLeftMouse db ? fAbortRightMouse db ? fLimitEnabled db ? wTimeLimit dw ? fMCIControl db ? fStepMCIDevice db ? dwMCIStartTime dd ? dwMCIStopTime dd ? fStepCaptureAt2x db ? wStepCaptureAverageFrames dw ? dwAudioBufferSize dd ? fDisableWriteCache db ? AVStreamMaster dw ? CAPTUREPARMS ENDS вот что я не правильно тут мог сделать
Смотрите файл windef.h. Там все это определяется. например в винде BOOL 4 байта а у вас Код (Text): fMakeUserHitOKToCapture db ?
а остальные как, там вроде их всего пять осталось)) bool в гугле уподабливается одному байту, тоесть db , но это не работает. Еще больше мути про uint ваще тьма qb, dd, qd.....
windef.h. А если коротко: везде dd (и почему-то мне кажется, что fUsingDOSMemory BOOL ? масм тоже поймёт).
да кстати и в правду понимает, и не только BOOL и другие тоже, но нужно еще знать весь размер структуры. с DWORD все ясно а сколько занимают BOOL c UINT ?
а, тогда все ясно. Но ошибка по-прежнему осталась...ибо гдето ещё накосячил) при загрузке структуры похоже происходит какойто таинственный сдвиг всех данных в этой структуре, в результате функции передаются кривые параметры
подскажите пожалуста как в этом коде узнать, какая WinAPI вызывается? обычно встречаются более простые вызовы. а с этим разобраться немогу. Код (Text): mov eax,[403C62h] mov ebx,[eax] push 0 push 403C66h push 403090h push dword ptr [403C62h] call dword ptr [ebx+0Ch]
Узнать можно, подойдя в отладчике к и посмотрев, куда идет вызов, либо смотреть: [403C62h]- берем оттуда дворд, прибавляем 0Ch, берем дворд по получившемуся адресу и смотрим, куда он указывает.
Как на WinAPI определить буквы разделов физического диска, допустим у меня один hdd(physicaldrive0) с тремя разделами и нужно узнать их букывки (?:\, ?:\, ?:\)
moderhi bool в плюсах - встроенный тип, размер 1 байт. BOOL (большими буквами) - виндовый из заголовочного файла, 4 байта.
И не забываем про выравнивание. В виндовых хидерах выравнивание, как правило, по границе qword (8 байт).
CyberManiac спасибо, просвятил! Ursus спасибо, буду иметь ввиду! на данный момент мучаюсь с проблемой описанной в #15 посту
Спасибо за отклик l_inc Пытался- не подходят, ни одна из них не принимает в качестве параметра "physicaldrive X" мне нужен способ получить буквы томов по номеру physicaldrive в системе. Например, имеем \\.\PHYSICALDRIVE0 -> получаем буквы его партиций C:\, F:\,... или \\.\PHYSICALDRIVE1 -> получаем буквы партиций S:\, D:\,... в msdn пока ничего путного ненашел