Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / A и W объекты ядра / 11 сообщений из 11, страница 1 из 1
26.07.2017, 20:04:13
    #39495561
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
A и W объекты ядра
Кто-нибудь может кинуть в меня ссылкой, где сказано, что 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
26.07.2017, 20:14:24
    #39495564
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
A и W объекты ядра
_Vasilisk_Кто-нибудь может кинуть в меня ссылкой, где сказано, что A и W функции создают один и тот же объект ядра при совпадающем имени?
Функции A в действительности вызывают аналогичную функцию W. Читать у Рихтера ;)
...
Рейтинг: 0 / 0
26.07.2017, 20:21:45
    #39495565
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
A и W объекты ядра
В исходниках винды
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
26.07.2017, 20:25:04
    #39495567
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
A и W объекты ядра
_Vasilisk_ > Раньше проверял вроде объекты были разные.

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

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

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

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

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

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


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