Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по API

6.6K
25 июля 2006 года
Scaiman
126 / / 25.07.2006
Здравствуйте я недавно начел изучать Assembler и не понимаю некоторых API. Помогите разобраться.
invoke GetCurrentDirectory,40,ADDR Catalog
invoke GetFileSizeEx, Sustem(что здесь указать путь к файлу это понятно),В книге пишется что тут указывают на структуру LARGE_INTEGER для сохранения размера файла так где или как получить размер. Про структуру ничего непонятно там всего в 5 словах.
invoke WriteFile,Путь к файлу, Переменная для записи тоже понятно,?,?,?
И как скопировать в буфер например не 1 строчку а 10.
Какой Api или Macro можно слаживать данные в буфере Catalog и Bufer
C Macro вообще толком нечего непонятно
Такая же проблема и с ReadFile
Invoke GetCursorPos,Позиция курсора, сюда переменная нужна или ???.
Invoke EnableMenuItem,дескриптор меню де его взять ,IDB_EXIT,MF_DISABLE
Страницы:
6.6K
22 августа 2006 года
Scaiman
126 / / 25.07.2006
Ааагромное Спасибо!
6.6K
23 августа 2006 года
Scaiman
126 / / 25.07.2006
Помогите разобраться как проверить что файл PE прочитал о PE но вовсех смещение разное C8h или E0 как правильно его высчитывать
invoke CreateFile,addr file,GENERIC_READ or GENERIC_WRITE,\
NULL,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL
cmp eax,INVALID_HANDLE_VALUE
je _re
mov fileh,eax
invoke ReadFile,fileh,addr bufer,files,addr fileb,NULL
cmp eax,0
je _re
cmp word ptr bufer[0B0h],04550h
je _pe
jmp _exit
_pe:
invoke MessageBeep,1
jmp _exit
_re:
invoke MessageBox,NULL,NULL,NULL,MB_ICONERROR or MB_OK
_exit:
invoke CloseHandle,fileh
Заранее спасибо.
841
23 августа 2006 года
_nic
199 / / 29.07.2006
[QUOTE=ШпиЁн]:-)))) половина функций недокументирована ;) На английском языке у меня вот что было...[/QUOTE]
Может тогда и ссылку на нужные *.lib и *.h дашь?
1.8K
23 августа 2006 года
k3Eahn
365 / / 19.12.2005
[quote=Scaiman]Помогите разобраться как проверить что файл PE прочитал о PE но вовсех смещение разное C8h или E0 как правильно его высчитывать
invoke CreateFile,addr file,GENERIC_READ or GENERIC_WRITE,\
NULL,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL
cmp eax,INVALID_HANDLE_VALUE
je _re
mov fileh,eax
invoke ReadFile,fileh,addr bufer,files,addr fileb,NULL
cmp eax,0
je _re
cmp word ptr bufer[0B0h],04550h
je _pe
jmp _exit
_pe:
invoke MessageBeep,1
jmp _exit
_re:
invoke MessageBox,NULL,NULL,NULL,MB_ICONERROR or MB_OK
_exit:
invoke CloseHandle,fileh
Заранее спасибо.[/quote]
IMAGE_DOS_HEADER.e_lfanew содержит смещение структуры IMAGE_NT_HEADERS от начала файла.
6.6K
23 августа 2006 года
Scaiman
126 / / 25.07.2006
А поточнее можно как на ASM оформить
1.8K
23 августа 2006 года
k3Eahn
365 / / 19.12.2005
buffer - соответственно куда ты прочитал файл. Синтаксис масмовский.
 
Код:
mov esi,offset buffer
movzx edx,WORD PTR [esi]
cmp edx,'ZM'
jnz @@invalid_file
mov edx,(IMAGE_DOS_HEADER PTR [esi]).e_lfanew
cmp DWORD PTR [esi+edx],'EP'
jnz @@invalid_file
354
23 августа 2006 года
ШпиЁн
468 / / 19.02.2006
[QUOTE=_nic]Может тогда и ссылку на нужные *.lib и *.h дашь?[/QUOTE]

Эти функции есть в DDK, либо их нужно получать через GetProcAddress и т.д.
6.6K
24 августа 2006 года
Scaiman
126 / / 25.07.2006
У меня есть DDK 2600.1106 здесь в архиве лежат списки всех библиотек если что пишите скину а то всё сразу много весит да вроде есть NTDLL.lib
6.6K
25 августа 2006 года
Scaiman
126 / / 25.07.2006
Подскажите, как решить такую проблему.
имеется переменная в неё записываю данные
...
bufer dd ?
...
invoke ReadFile,filehandle,addr bufer,filesize,addr filebytez,NULL
в eax=0 то есть ошибка
...
а если так
...
bufer dd 10000 dup (?)
...
invoke ReadFile,filehandle,addr bufer,filesize,addr filebytez,NULL
...
а так всё нормально но при этом прога весит на 10 kb больше почему там переменная неувеличивается сама
а выдаёт ошибку.
Заранее спасибо
354
25 августа 2006 года
ШпиЁн
468 / / 19.02.2006
обычно читают в буфер, а не в переменную :-)))
6.6K
25 августа 2006 года
Scaiman
126 / / 25.07.2006
bufer dd ? я точно несзнаю это буфер или что как в буфер писать
6.6K
25 августа 2006 года
Scaiman
126 / / 25.07.2006
я попробовал использовать
invoke MapViewOfFile,filemaphandle,FILE_MAP_ALL_ACCESS,0,0,0
но она мне ненравиться асобо нельзя просматреть записанные данные они обычно по адрессу 00800000 а WINDASM непоказывает
354
25 августа 2006 года
ШпиЁн
468 / / 19.02.2006
buffer db 4096 dup (?)
invoke ReadFile,filehandle, addr bufer, 4096, addr filebytez, NULL

мы читаем 4 Кб из файла, в filebytez будет число прочитанных байт.
6.6K
25 августа 2006 года
Scaiman
126 / / 25.07.2006
Нет ты маленько непонел я хотел чтобы можно было записывать в буфер любой размер а исходный размер программы от этого неувеличивался а то buffer db 4096 dup (?) увеличит её на 4 килобайта, buffer db ?=>почему несможет сам расти по мере заполнения.
или проще использовать проекцию MapViewOfFile но я незнаю как записывать или читать если есть пример то буду весьма рад помощи
354
25 августа 2006 года
ШпиЁн
468 / / 19.02.2006
buffer db ? - ты резервируешь ОДИН байт, в него много не влезет :-))))

Ты выделяешь память статически, можно динамически - сколько надо столько и отмерил(потом нужно ее освободить) - в Си можно использовать malloc и т.д.

P.S. асм - вещь хорошая(к несчастью я его мало знаю), но начинать изучение программирования с него я не рекомендую. Си рулит :-)))
6.6K
25 августа 2006 года
Scaiman
126 / / 25.07.2006
А я начинал с Бэйсика потом турбо паскаль, Delphi, ну и ASM а диск с СИ мне по почте через инет идёт уууу =( и наверно непредёт а так у нас его непросто, достать проще через инет. А где можно почитать " статически, можно динамически " подскажи пожалуйста.
1.8K
25 августа 2006 года
k3Eahn
365 / / 19.12.2005
Scaiman
Если ты хочешь, чтобы твои переменные были проинициализированы, то эти переменные должны быть объявлены в контексте директивы .data, т.е. так:
 
Код:
.data
buffer db 1000h dup <0CCh>

В этом случае эти переменные будут физически присутствовать в файле программы, т.е. считай, что твой exe уже на 4кБ больше.

Иначе, если тебе нет необходимости инициализировать переменные или тебе достаточно, чтобы они были занулены, то объявляй их в контексте директивы .data?:
 
Код:
.data?
buffer db 1000h dup<?>

В этом случае данный буфер на размер программы(на диске) не повлияет.
6.6K
26 августа 2006 года
Scaiman
126 / / 25.07.2006
Вот спасибо агромное.
6.6K
30 августа 2006 года
Scaiman
126 / / 25.07.2006
Памогите разобраться.
Вот код
assume edi "двоеточие" ptr IMAGE_DOS_HEADER
mov edi,hMap
add edi,[edi].e_lfanew
mov pPE,edi здесь будет адрес PE загаловка так и есть
;;;;;;;;;;;;;;;;;;;;;;;;;;
add edi,4
mov pFileHeader,edi тут будет адресс файлового заголовка
;;;;;;;;;;;;;;;;;;;;;;;;;;
add edi,sizeof IMAGE_FILE_HEADER
mov pOptionalHeader,edi здесь должен быть адрес опционального заголовка и что значит "sizeof" негде немагу найти после компеляции выгледит как add edi,14 почему если
typedef struct _IMAGE_FILE_HEADER {
WORD Machine; 2
WORD NumberOfSections; 4
DWORD TimeDateStamp; 8
DWORD PointerToSymbolTable ;12
DWORD NumberOfSymbols; 16
WORD SizeOfOptionalHeader; 18
WORD Characteristics; 20
} IMAGE_FILE_HEADER;
почему 14 а не 20 обясните пожалуйста.
код с сайта W A S M . R U
1.8K
30 августа 2006 года
k3Eahn
365 / / 19.12.2005
Может потому, что 14h=20d?;)
841
30 августа 2006 года
_nic
199 / / 29.07.2006
Очень нужен правильный пример по заполнению структуры SERVICE_TABLE_ENTRY
354
31 августа 2006 года
ШпиЁн
468 / / 19.02.2006
 
Код:
void  WINAPI  Service_Main(DWORD dwArgc, LPTSTR *lpszArgv); // реализацию этой функции посмотришь в MSDN, там есть пример
SERVICE_TABLE_ENTRY ste[] = {{TEXT(""),(LPSERVICE_MAIN_FUNCTION)Service_Main}, {NULL, NULL}};;
........
........
........
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    StartServiceCtrlDispatcher(ste);
    return 0;
}
841
02 сентября 2006 года
_nic
199 / / 29.07.2006
А есть какая то API ф-ция устанавливающая значение поля dwCurrentState структуры _SERVICE_STATUS?
354
02 сентября 2006 года
ШпиЁн
468 / / 19.02.2006
пример из MSDN, там все подробно и понятно написано :-))))
 
Код:
// Устанавливаем состояние службы - "running"
    ss.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
    ss.dwServiceSpecificExitCode = 0;
    ss.dwWin32ExitCode = 0;
    ss.dwCheckPoint = 0;
    ss.dwCurrentState = SERVICE_RUNNING;
    ss.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN | SERVICE_ACCEPT_PAUSE_CONTINUE;
    ss.dwWaitHint = 0;
    SetServiceStatus(ssh, &ss); // ssh - получаем вызовом RegisterServiceCtrlHandler

это "изнутри" сервиса.
Через ControlService - можно статус поменять "снаружи" :-))))
6.6K
11 сентября 2006 года
Scaiman
126 / / 25.07.2006
Подскажите как можно разместить файл в памяти размером в 60 mb или более только так чтобы неписать вроде этого "Bufer db 500 dup (?)" и этого тоже => CreateFileMapping
Заранее спасибо
257
12 сентября 2006 года
kosfiz
1.6K / / 18.09.2005
to Scaiman
точно не помню, поэтому не гарантирую правильность, но можно еще так сделать
LoadLibraryEx(pchar(filename),0,DONT_RESOLVE_DLL_REFERENCES);
6.6K
13 сентября 2006 года
Scaiman
126 / / 25.07.2006
Кто-нибудь может объяснить
find db "D:\*.*",0
file db 40 dup (?)
...
invoke FindFirstFile,addr find,addr file
возвращает в file вот что
004032B0 10 00 00 00 14 64 EF 69 DE B9 C6 01 46 ... dпiЮ№Ж F
004032C0 E2 75 66 E4 C1 C6 01 46 E2 75 66 E4 C1 C6 01 вufдБЖ FвufдБЖ
в справочнике написано рода такого
typedef struct _WIN32_FIND_DATA { // wfd
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA;
но что-то я не могу понять что к чему.
6.6K
19 сентября 2006 года
Scaiman
126 / / 25.07.2006
Подскажите для чего нужна MSVCR71.dll
354
19 сентября 2006 года
ШпиЁн
468 / / 19.02.2006
это runtime библиотека от MSVC++ 2003 ;-))))
6.6K
19 сентября 2006 года
Scaiman
126 / / 25.07.2006
А поточнее можно и есть ли у кого нибуть справочник по OPENGL32 (его API) а то никак немагу найти.
354
19 сентября 2006 года
ШпиЁн
468 / / 19.02.2006
В общем, если в настройках проекта С/С++ -> Code Generation -> Runtime Library поставить multithreaded dll - то размер модуля сократится, но придется таскать за собой эту библиотеку :-))))

PS это на VS 2002, ибо я на нем застрял :)
6.6K
22 сентября 2006 года
Scaiman
126 / / 25.07.2006
Подскажите где можно найти справочник по OpenGL версии 2.0 а то нигде немагу найти везде ниже 2 или там нового ничего нету.
заранее спасибо
6.6K
23 сентября 2006 года
Scaiman
126 / / 25.07.2006
:confused: WSAAsyncSelect()* функция указывает посылать сообщение от сокета заданному ОКНУ при любом из заданных сетевых событий. А если никокого окна несуществует то как тогда получать сообщения?
1.9K
23 сентября 2006 года
SABROG
242 / / 26.01.2006
В нити recv
6.6K
23 сентября 2006 года
Scaiman
126 / / 25.07.2006
Что значит постоянно проверять входящие сообщения?
6.6K
25 сентября 2006 года
Scaiman
126 / / 25.07.2006
Подскажите как задать EDIT это сообщение SS_CENTER
пробовал SendDlgItemMessageно ничего невыходит?
1.9K
25 сентября 2006 года
SABROG
242 / / 26.01.2006
[QUOTE=Scaiman]Что значит постоянно проверять входящие сообщения?[/QUOTE]
Ты не получишь обратно управление в главную программу, пока recv не примет данные или сокет не будет закрыт. Если его вызывать в цикле главной программы, то она у тебя просто будет висеть.
6.6K
25 сентября 2006 года
Scaiman
126 / / 25.07.2006
:confused: Немагу разобраться как правильно послать созданнаму окну сообщение WS_EX_TOPMOST или Static "SS_CENTER,SS_RIGHT,SS_LEFT" как непробовал всё время неработает.
406
26 сентября 2006 года
vitaly2003s
481 / / 27.07.2004
Используй вместо WS_EX_TOPMOST WinApi функцию
SetWindowPos(your_hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);
406
26 сентября 2006 года
vitaly2003s
481 / / 27.07.2004
Вообще че ты используеш ВинАпи?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог