Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   WinAPI: несколько вопросов по Win32API (http://forum.oszone.net/showthread.php?t=74505)

CyraxZ 13-11-2006 11:30 510892

WinAPI: несколько вопросов по Win32API
 
1. Первым параметром функции WaitForSingleObject передаётся дескриптор ресурса типа HANDLE:
Код:

       
DWORD WaitForSingleObject(
HANDLE hObject,
DWORD dwTimeot
);

По смыслу объект должен быть сигнального типа (событие, мьютекс, критическая секция и др.). Но что произойдёт, если передать функции дескриптор, скажем, файла (или это тоже объект сигнального типа - открыт/закрыт ?) или потока (это уже точно не объект сигнального типа) ? Дескрипторы то у них у всех одного системного типа - HANDLE...

2. В инете нашёл несколько справочников по функциям WinAPI. Но ни в одном из них нет описания функций WaitCommEvent (WaitForSingleObject и WaitForMultipleObject есть) и CreateMutex, хотя все они из kernel32.dll.
Может ли кто-нибудь посоветовать действительно хороший справочник по функциям Win32API, хотя бы по функциям из библиотеки kernel32.dll...

3. Какую технологию сетевого взаимодействия реализует библиотека NETAPI32.DLL с функциями расширения для работы с сетью ?
Сокеты или что-то другое ?

4. Есть библиотеки Win32 API ядра операционной системы. Для Windows 95/98 это: kernel32.dll, user32.dll, gdi32.dll и comdlg32.dll.
Есть куча дополнительных либ Win32API с функциями расширения (mapi32.dll, netapi32.dll, winmm.dll, winsock2.dll и др.).
Так вот, верно ли, что все эти функции расширения в конечном счёте используют функции ядра ОС ?
Если да, то вызывают ли они функции ядра из библиотек kernel32.dll и др., либо дублируют код этих функций в своих dll-ках ?

DillerInc 13-11-2006 12:28 510915

Цитата:

или потока (это уже точно не объект сигнального типа) ?
...вот тебе небольшой кусок кода на TASM32 для примера:

Код:

; <Создаём удалённый поток>
        push    NULL
        push    NULL
        push    NULL
        push    CodePtr
        push    NULL
        push    0
        push    dword ptr pInfo.hProcess
        call    CreateRemoteThread           
        mov    hRemote, eax                      ; Сохраняем его дескриптор
; </Создаём удалённый поток>
;
; <Ожидаем завершения удалённого потока>
        push    0FFFFFFFFh
        push    hRemote
        call    WaitForSingleObject
; </Ожидаем завершения удалённого потока>

...делай выводы.
Цитата:

Может ли кто-нибудь посоветовать действительно хороший справочник по функциям Win32API
...да -- MSDN -- WaitCommEvent.

CyraxZ 13-11-2006 13:04 510938

DillerInc
Т.е., terminated/не terminated...
Ладно, тогда как насчёт консольного ввода ?

amel27 13-11-2006 13:18 510947

CyraxZ
3. RPC
4. Ищи DEPENDS.EXE из DDK, вызывают


Время: 03:58.

Время: 03:58.
© OSzone.net 2001-