Помогите plz. сделать ф-ций такими как эта function MessageBoxA(hWnd: cardinal; lpText, lpCaption: PChar; uType: Cardinal): Integer; stdcall; external 'user32.dll' name '_MessageBoxA@16'; function CreateFileA( {004} lpFileName: PAnsiChar; {008} dwDesiredAccess, dwShareMode: DWORD; {004} lpSecurityAttributes:Pointer {PSecurityAttributes}; {008} dwCreationDisposition, dwFlagsAndAttributes: DWORD; {004} hTemplateFile: THandle) : THandle; stdcall; external 'kernel32.dll' name 'CreateFileA'; { function ReadFile(hFile: THandle; var Buffer; nNumberOfBytesToRead: DWORD; var lpNumberOfBytesRead: DWORD; lpOverlapped: POverlapped): BOOL; stdcall; external 'kernel32.dll'; function SetFilePointer(hFile: THandle; lDistanceToMove: Longint; lpDistanceToMoveHigh: Pointer; dwMoveMethod: DWORD): DWORD; stdcall; external 'kernel32.dll'; function CreateFileMappingA(hFile: THandle; lpFileMappingAttributes: PSecurityAttributes; flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: PAnsiChar): THandle; stdcall; external 'kernel32.dll'; function FindFirstFileA(lpFileName: PAnsiChar; var lpFindFileData: TWIN32FindDataA): THandle; stdcall; external 'kernel32.dll'; function FindNextFileA(hFindFile: THandle; var lpFindFileData: TWIN32FindDataA): BOOL; stdcall; external 'kernel32.dll'; function FindClose(hFindFile: THandle): BOOL; stdcall; external 'kernel32.dll'; function MapViewOfFile(hFileMappingObject: THandle; dwDesiredAccess: DWORD; dwFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap: DWORD): Pointer; stdcall; external 'kernel32.dll'; function CloseHandle(hObject: THandle): BOOL; stdcall; external 'kernel32.dll'; function UnmapViewOfFile(lpBaseAddress: Pointer): BOOL; stdcall; external 'kernel32.dll'; function GetFileSize(hFile: THandle; lpFileSizeHigh: Pointer): DWORD; stdcall; external 'kernel32.dll'; function LoadLibraryA(lpLibFileName: PAnsiChar): HMODULE; stdcall; external 'kernel32.dll'; }
Если честно, до конца не понял что именно тебе нужно, если тебя интересует ...@16 и что это значит, то тут все просто, это значит что функция\процедура имеет 4 параметра длиной по 4 байта. А вот какие именно тут тебе только дока поможет.
кстати, как при компиляции ДЛЛ в масме указать линкеру, чтобы генеритл в таблице экспорта не SomeFunc, a SomeFunc@16 к примеру, т.е. с кол-вом парам-ов, т.к. вызывать будет C программа. как это сделать в С - вопросов нет, а вот как в масме - вопрос. если в def файле указывать @ - это будет ординал
Jupiter По умолчанию (если указать ".model flat,stdcall"), PROC манглит символы согласно стандарту stdcall, т.е. SomeFunc превращает в _SomeFunc@16 Ничего дополнительно указывать не надо. Расширенная версия символов попадает в *.lib, который потом можно использовать в сишном проекте для статической линковки с DLL. Фактически, имена в таблице экспорта DLL имеют значение только для динамической линковки. LuckyDevil Это значит, что параметры занимают 16 байт на стеке. Чаще всего их действительно оказывается 4 по 4 байта, но не всегда. Их может быть 2 по 8 байт. Совсем недавно попался пример с одним параметром размером 12 байт.