Форум: "Основная";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизПравильно ли переведено выражение из С в Delphi? Найти похожие ветки
← →
впорос (2005-08-25 10:33) [0]Правильно ли переведено выражение?
из:
typedef DWORD (*PMyType)(BOOL bParam, LPWSTR lpParam);
в:
type
TMyType = function(bParam :boolean; lpParam :PWideChar) :Longword;
PMyType = ^TMyType;
← →
han_malign © (2005-08-25 11:49) [1]PMyType - лишнее, TMyType - процедурный тип, в зависимости от контекста или прямого указания "@" - является указателем или "вызовом"...
TMyType = function(bParam :boolean; lpParam :PWideChar) :Longword; - если цепляется из DLL - вероятнее всего потребует указания cdecl(extern "C"{...}) или stdcall(extern "C"{CALLBACK/APICALL/PASCAL(устаревшее)/__declspec(dllexport/dllimport)...}) .
← →
впорос (2005-08-25 11:59) [2]конкретнее говоря мне надо перевести в Delphi эту
структуру
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/wlx_notification_info.asp
typedef struct _WLX_NOTIFICATION_INFO {
ULONG Size;
ULONG Flags;
PWSTR UserName;
PWSTR Domain;
PWSTR WindowStation;
HANDLE hToken;
HDESK hDesktop;
PFNMSGECALLBACK pStatusCallback;
} WLX_NOTIFICATION_INFO, *PWLX_NOTIFICATION_INFO;
вот эта функция PFNMSGECALLBACK pStatusCallback ...
объявлен тип следующим образом:
typedef DWORD (*PFNMSGECALLBACK)(BOOL bVerbose, LPWSTR lpMessage);
и нужно это для такой функции
void Event_Handler_Function_Name(PWLX_NOTIFICATION_INFO pInfo);
которая конечно же сидит в DLL
всё это называется Winlogon Notification Packages в MSDN
← →
tesseract © (2005-08-25 14:10) [3]TLoginCallback = function(bParam :boolean; lpParam :PWideChar):Longword; stdcall;
bParam скорее всего ни фига не boolean
TWLX_NOTIFICATION_INFO = packed record{
size: cardinal;
flags:cardinal;
username:Pwidechar;
Domain:Pwidechar
WindowStation:PwideChar;
hToken:Thandle;
hDesktop:Thandle; (? не уверен)
pStatusCallback:TloginCallBack;
};
PWLX_NOTIFICATION_INFO= ^TWLX_NOTIFICATION_INFO;
Вроде так, но могу ошибаться.
← →
впорос (2005-08-25 14:13) [4]у меня уже всё заработало .... или почти всё, но это уже другие проблемы
callback вызывается нормально с тем переводом что в самом начале
← →
han_malign © (2005-08-25 15:13) [5]>callback вызывается нормально с тем переводом что в самом начале
MSDN: pStatusCallback - Reserved for internal use.
- по барабану как "переводить", будет работать и так:TWLX_NOTIFICATION_INFO = packed record
Size : LongWord;
Flags : LongWord;
UserName : PWideChar;
Domain : PWideChar
WindowStation : PWideChar;
hToken : THandle;
hDesktop : THandle;
pStatusCallback: Pointer;
end;
З.Ы. На будущее: BOOL - переводится как LongBool;typedef int BOOL;
← →
Sapersky (2005-08-25 16:16) [6]BOOL - переводится как LongBool
Ну да, в Дельфи...
Как-то отконвертировал сишные заголовки автоматический конвертером, и он BOOL не стал трогать - так и перевёл, т.е. в Дельфи получился LongBool. Я потом до-олго искал источник глюков... нашёл только трассировкой Си-программы. Может, конечно, это зависит от компилятора и его настроек, но VC в том конкретном случае посчитал размер bool = 1 байту. А т.к. это было поле структуры, все последующие поля "съехали"...
← →
han_malign © (2005-08-25 16:33) [7]>но VC в том конкретном случае посчитал размер bool = 1 байту
- ну дык, BOOL и bool - это разные типы в C(таки, case-sensitive), bool - C-generic тип с длинной 1 байт, а BOOL это платформозависимый тип, длина которого определяется разрядностью ОС...
← →
впорос (2005-08-26 09:44) [8]ну вот набросал библиотеку для Winlogon (через WLX)
загрузка:
1. DLL_PROCESS_ATTACH
2. Startup Event
3. Logon Event
4. StartShell Event
выключение:
1. Logoff Event
2. ShutDown Event
всё
а где мой DLL_PROCESS_DETACH ?
← →
han_malign © (2005-08-26 10:34) [9]>а где мой DLL_PROCESS_DETACH ?
- в смысле?
Если это DLL написанная на Deplhi, то для всех подключенных модулей(unit) - на DLL_PROCESS_ATTACH вызывается секция initialization, на DLL_PROCESS_DETACH - finalization...
← →
впорос (2005-08-26 14:01) [10]у меня ведется лог событий и лог загрузки выгрузки библиотеки
так вот загрузка библиотеки отмечается в логе, а выгрузка нет попадает, хм.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c