powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / A и W объекты ядра
11 сообщений из 11, страница 1 из 1
A и W объекты ядра
    #39495561
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь может кинуть в меня ссылкой, где сказано, что A и W функции создают один и тот же объект ядра при совпадающем имени?

Т.е. что код
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
const
  CName = 'TestObject';
var
  LEventA: THandle;
  LEventW: THandle;
  LRes: Cardinal;
begin
  LEventA := CreateEventA(nil, False, False, CName);
  LEventW := CreateEventW(nil, False, False, CName);
  SetEvent(LEventA);
  LRes := WaitForSingleObject(LEventW, 10000);
  Writeln('Res: ', LRes);
  CloseHandle(LEventA);
  CloseHandle(LEventW);
end.

всегда будет возвращать WAIT_OBJECT_0 в любых конфигурациях.

Раньше проверял вроде объекты были разные. Сейчас посмотрел - один

С уважением, Vasilisk
...
Рейтинг: 0 / 0
A и W объекты ядра
    #39495564
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Кто-нибудь может кинуть в меня ссылкой, где сказано, что A и W функции создают один и тот же объект ядра при совпадающем имени?
Функции A в действительности вызывают аналогичную функцию W. Читать у Рихтера ;)
...
Рейтинг: 0 / 0
A и W объекты ядра
    #39495565
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В исходниках винды
private\windows\base\client\synch.c
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
//
// Event Services
//
HANDLE
APIENTRY
CreateEventA(
    LPSECURITY_ATTRIBUTES lpEventAttributes,
    BOOL bManualReset,
    BOOL bInitialState,
    LPCSTR lpName
    )

/*++

Routine Description:

    ANSI thunk to CreateEventW


--*/

{
    PUNICODE_STRING Unicode;
    ANSI_STRING AnsiString;
    NTSTATUS Status;
    LPCWSTR NameBuffer;

    NameBuffer = NULL;
    if ( ARGUMENT_PRESENT(lpName) ) {
        Unicode = &NtCurrentTeb()->StaticUnicodeString;
        RtlInitAnsiString(&AnsiString,lpName);
        Status = RtlAnsiStringToUnicodeString(Unicode,&AnsiString,FALSE);
        if ( !NT_SUCCESS(Status) ) {
            if ( Status == STATUS_BUFFER_OVERFLOW ) {
                SetLastError(ERROR_FILENAME_EXCED_RANGE);
                }
            else {
                BaseSetLastNTError(Status);
                }
            return NULL;
            }
        NameBuffer = (LPCWSTR)Unicode->Buffer;
        }

    return CreateEventW(
                lpEventAttributes,
                bManualReset,
                bInitialState,
                NameBuffer
                );
}

...
Рейтинг: 0 / 0
A и W объекты ядра
    #39495567
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_ > Раньше проверял вроде объекты были разные.

Раньше - это когда, в какой ОС?

Kazantsev Alexey> Функции A в действительности вызывают
Kazantsev Alexey> аналогичную функцию W. Читать у Рихтера ;)

Справедливости ради, это зависит от OC.
Но для современных версий - в общем, да.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
A и W объекты ядра
    #39495571
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамСправедливости ради, это зависит от OC.
Но для современных версий - в общем, да.
Рихтер писал о W2K, но по логике оно так в любой версии с юникодовым API, то есть начиная с NT.
...
Рейтинг: 0 / 0
A и W объекты ядра
    #39495578
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 98-й это было не так.
Про Линолеум не помню.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
A и W объекты ядра
    #39495584
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Раньше проверял вроде объекты были разные.

При совпадении имени? В рамках одного пользователя? Да ну.
...
Рейтинг: 0 / 0
A и W объекты ядра
    #39495587
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, интересно, что было бы в 98-й в таком
случае - кракозябры или новый дескриптор?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
A и W объекты ядра
    #39495623
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамКстати, интересно, что было бы в 98-й в таком
случае - кракозябры или новый дескриптор?Была бы вызвана A с именем, сконвертированным из юникода в анси.
Тогда были такие же заглушки, просто в обратную сторону. Начиная с Win95 вроде A/W появились и были заглушки W->A, а кажется начиная с W2K стало наоборот - A->W
...
Рейтинг: 0 / 0
A и W объекты ядра
    #39495628
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock> Была бы вызвана A с именем, сконвертированным из юникода в анси.
YuRock> Тогда были такие же заглушки, просто в обратную сторону.

Да, наверное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
A и W объекты ядра
    #39495986
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyЧитать у Рихтера ;)Да. Вчера вечером нашел эту фразуГаджимурадов Рустам_Vasilisk_ > Раньше проверял вроде объекты были разные.
Раньше - это когда, в какой ОС?WinXP
GunSmokerПри совпадении имени? В рамках одного пользователя? Да нуВ смысле не хендлы одинаковые, а получались разные объекты. Кстати, пользователи могли и отличаться, но тогда изпользовался префикс Global\

В общем, всем спасибо. Спишу на свое умопомрачения
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / A и W объекты ядра
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]