Функция PktMonClntInitialize (pktmonclntk.h)

Функция PktMonClntInitialize инициализирует приложение PktMonClnt, информируя монитор пакетов об идентификаторе модуля, который идентифицирует клиент, а также некоторые обработчики, которые он делает доступными для вызова монитора пакетов.

Синтаксис

NTSTATUS PktMonClntInitialize(
  PNPI_MODULEID                     ModuleId,
  PKTMON_CLIENT_COMP_ENUM_HANDLER   EnumComponents,
  PKTMON_CLIENT_CLEANUP_HANDLER     CleanupComponents,
  PKTMON_CLIENT_COMP_NOTIFY_HANDLER NotifyComponent
);

Параметры

ModuleId

Идентификатор сетевого модуля, используемый для идентификации приложения PktMonClnt.

EnumComponents

Обработчик, который должен вызывать монитор пакетов для перечисления компонентов.

typedef VOID (NTAPI PKTMON_CLIENT_COMP_ENUM)(VOID);
typedef PKTMON_CLIENT_COMP_ENUM(*PKTMON_CLIENT_COMP_ENUM_HANDLER);

CleanupComponents

Обработчик, который монитор пакетов должен вызывать компоненты очистки. Может иметь значение NULL.

typedef VOID (NTAPI PKTMON_CLIENT_CLEANUP)(VOID);
typedef PKTMON_CLIENT_CLEANUP(*PKTMON_CLIENT_CLEANUP_HANDLER);

NotifyComponent

Обработчик, который монитор пакетов должен вызывать для уведомления компонента. Может иметь значение NULL.

typedef VOID (NTAPI PKTMON_CLIENT_COMP_NOTIFY)(_In_ PKTMON_COMPONENT_CONTEXT *CompContext);
typedef PKTMON_CLIENT_COMP_NOTIFY(*PKTMON_CLIENT_COMP_NOTIFY_HANDLER);

Возвращаемое значение

Если функция успешно выполнена, она возвращается STATUS_SUCCESS. В противном случае возвращается NTSTATUS код ошибки.

Замечания

PktMonClntInitialize следует вызывать только один раз для каждого модуля. Чтобы неинициализировать драйвер перед выходом, вызовите функцию PktMonClntUninitialize .

Требования

Требование Ценность
Заголовок pktmonclntk.h

См. также

Пример

const NPI_MODULEID NPI_PKTMON_CLNT_DRV_MODULEID = {
    sizeof(NPI_MODULEID),
    MIT_GUID,
    {
        0xeb004a00 + 0xea,
        0x9b1a, 0x11d4, {0x91, 0x23, 0x00, 0x50, 0x04, 0x77, 0x59, 0xbc}
    }
};

VOID NTAPI PktMonApiTstRegistrationCallback(VOID)
{
    // NOTE: Can be used to register providers
}

VOID NTAPI PktMonApiTstClientCleanupCallback(VOID)
{
    // Cleanup components
}

VOID NTAPI PktMonApiTstClientCompNotifyCallback(_In_ PKTMON_COMPONENT_CONTEXT *CompContext)
{
    UNREFERENCED_PARAMETER(CompContext);

    // Handle notification
}

NTSTATUS NTAPI DriverEntry(
    _In_ PDRIVER_OBJECT DriverObject,
    _In_ PUNICODE_STRING RegistryPath
)
{
    NTSTATUS status = STATUS_SUCCESS;

    status = PktMonClntInitialize(
        &NPI_PKTMON_CLNT_DRV_MODULEID,
        PktMonApiTstRegistrationCallback,
        PktMonApiTstClientCleanupCallback,
        PktMonApiTstClientCompNotifyCallback
    );
    if (STATUS_SUCCESS != status)
    {
        // Log error
        return status;
    }

    // Additional driver initialization code

    return status;
}