скрытое меню

general\echo\umdf и VirtualSerial (удачно!)

Praesenti veritate - момент истины (латинский). Кстати вопрос - какой язык из современных ближе к латинскому?

Все что связано с сокетами и TCP ищем в примерах WinDDK7

Итак - наша идея в драйвер засунуть слушающий tcp поток.

Ищем глобально по всем файлам C:\WinDDK\7600.16385.1\

У сервера и у клиента должно быть что-то типа:

WSAStartup(...

У сервера должно быть :

socket(...
bind(...
listen(...
Ws2_32.lib

Результаты не очень обнадеживающие:
Сервер TCP похоже представлено только в C:\WinDDK\7600.16385.1\src\general\echo\umdfSocketEcho\Exe и это обычное консольное приложение, значит нам не подходит.

Ищем далее (ищем только в драйверах, обычные приложения не рассматриваем):

CreateThread(...

Тут что-то насчет сервиса C:\WinDDK\7600.16385.1\src\wpd\WpdServiceSampleDriver

находим Ура ! C:\WinDDK\7600.16385.1\src\general\echo\umdf - тут есть пример потока реализованного в драйвере.

Драйвер всегда реализует какие-то стандартные интерфейсы, всегда можно увидеть что-то типа :

class CMyDevice : 
    public CUnknown,
    public IPnpCallbackSelfManagedIo        

Внимание привлекают IPnp..., например IPnpCallbackSelfManagedIo .

Ищем class CMyDevice :
там встречаются:

IPnpCallbackHardware
IImpersonateCallback
IPnpCallback
IUsbTargetPipeContinuousReaderCallbackReadersFailed
IUsbTargetPipeContinuousReaderCallbackReadComplete
IFileCallbackCleanup
IObjectCleanup
IPnpCallbackRemoteInterfaceNotification
IPnpCallbackSelfManagedIo
HANDLE WINAPI CreateThread(
  _In_opt_  LPSECURITY_ATTRIBUTES  lpThreadAttributes,
  _In_      SIZE_T                 dwStackSize,
  _In_      LPTHREAD_START_ROUTINE lpStartAddress,
  _In_opt_  LPVOID                 lpParameter,
  _In_      DWORD                  dwCreationFlags,
  _Out_opt_ LPDWORD                lpThreadId
);