Пробелма с переводом кода для работы с IStream с Асм на СИ
От: Holly_Roger  
Дата: 26.01.06 12:00
Оценка:
Подскажите какю-нибудь документацию на русском по IStream. В MSDN как-то кратко и не понятно...

Нужно срочно переписать на си, я не могу понять, что за QWORD и каким образом он используется как LARGE_INTEGER и ULARGE_INTEGER.
Да и вообще асм не сильно понимаю... на уровне mov, sub, add

LOCAL    dwQWord: QWORD
    
lea    edi, dwQWord
mov    dword ptr[edi], 0
mov    dword ptr[edi+4], 0

coinvoke Stream, IStream, Seek, dwQWord, STREAM_SEEK_END, addr dwQWord


Помогите пожалуста. Заранее спасибо за ответ !
Re: Пробелма с переводом кода для работы с IStream с Асм на
От: vnp  
Дата: 26.01.06 18:43
Оценка:
Здравствуйте, Holly_Roger, Вы писали:

H_R>Подскажите какю-нибудь документацию на русском по IStream. В MSDN как-то кратко и не понятно...


H_R>Нужно срочно переписать на си, я не могу понять, что за QWORD и каким образом он используется как LARGE_INTEGER и ULARGE_INTEGER.


Ну из самых общих соображений, Q обозначает quad, т.е. четверку. QWORD — четверка слов, восьмибайтная величина, в первом приближении то же самое, что long long.

H_R>Да и вообще асм не сильно понимаю... на уровне mov, sub, add

H_R>LOCAL    dwQWord: QWORD
    
H_R>lea    edi, dwQWord
H_R>mov    dword ptr[edi], 0
H_R>mov    dword ptr[edi+4], 0


Здесь обнуляется 8 байт по адресу dwQWord, на C что-то вроде
long long dwQWord = 0;


H_R>coinvoke Stream, IStream, Seek, dwQWord, STREAM_SEEK_END, addr dwQWord


Что такое coinvoke — на знаю.

H_R>Помогите пожалуста. Заранее спасибо за ответ !
Re: Пробелма с переводом кода для работы с IStream с Асм на
От: runtime2  
Дата: 26.01.06 23:06
Оценка:
Здравствуйте, Holly_Roger, Вы писали:

H_R>Подскажите какю-нибудь документацию на русском по IStream. В MSDN как-то кратко и не понятно...


H_R>Нужно срочно переписать на си, я не могу понять, что за QWORD и каким образом он используется как LARGE_INTEGER и ULARGE_INTEGER.

H_R>Да и вообще асм не сильно понимаю... на уровне mov, sub, add

H_R>
H_R>LOCAL    dwQWord: QWORD
    
H_R>lea    edi, dwQWord
H_R>mov    dword ptr[edi], 0
H_R>mov    dword ptr[edi+4], 0

H_R>coinvoke Stream, IStream, Seek, dwQWord, STREAM_SEEK_END, addr dwQWord
H_R>


H_R>Помогите пожалуста. Заранее спасибо за ответ !


coinvoke это скорее всего call то есть вызов функции....далее через запятую передаются параметры
Re: Пробелма с переводом кода для работы с IStream с Асм на
От: chem  
Дата: 27.01.06 08:09
Оценка:
Здравствуйте, Holly_Roger, Вы писали:

H_R>LOCAL    dwQWord: QWORD
    
H_R>lea    edi, dwQWord
H_R>mov    dword ptr[edi], 0
H_R>mov    dword ptr[edi+4], 0

H_R>coinvoke Stream, IStream, Seek, dwQWord, STREAM_SEEK_END, addr dwQWord


Все это можно переписать так, ИМХО:

ULARGE_INTEGER uliNewPos = { 0 };
Stream->Seek( 0, STREAM_SEEK_END, &uliNewPos );


Подразумевается, что тип Stream — IStream *, IStreamPtr, CComPtr <IStream> или что-то аналогичное .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.