Регистрация для событий NLM (INetworkListManager, Advise, Sink и т. Д.)

В моем приложении Delphi я хотел бы получать информацию об изменениях в сети с помощью Microsoft Windows Network List Manager API (NLM):http://msdn.microsoft.com/library/ee264321

Я посмотрел на связанный пример «Как зарегистрироваться для событий NLM» и перевел его на Delphi. Тем не менее, я понятия не имею, как продолжить это.

var
    pNLM: INetworkListManager;
    pCpc: IConnectionPointContainer;
    pConnectionPoint: IConnectionPoint;
    pSink: IUnknown;
    dwCookie: LongInt;
const
    IID_IConnectionPointContainer: TGUID = '{B196B284-BAB4-101A-B69C-00AA00341D07}';
    IID_IUnknown: TGUID = '{00000000-0000-0000-C000-000000000046}';
begin
    if Succeeded(CoCreateInstance(CLASS_NetworkListManager, nil, CLSCTX_ALL, IID_INetworkListManager, pNLM)) then
    begin
        if Succeeded(pNLM.QueryInterface(IID_IConnectionPointContainer, pCpc)) then
        begin
            if Succeeded(pCpc.FindConnectionPoint(IID_INetworkEvents, pConnectionPoint)) then
            begin
                if Succeeded(pCpc.QueryInterface(IID_IUnknown, pSink)) then
                begin
                    pConnectionPoint.Advise(pSink, dwCookie);
                end;
            end;
        end;
    end;
end;

В статье говорится:

«После создания объекта INetworkListManager, указанного выше, вы будете получать уведомления INetworkEvents с этой точки вперед. PSink реализует интерфейс INetworkEvent, включая такие методы обработки событий, как NetworkAdded, NetworkDeleted, NetworkConnectivityChanged и NetworkPropertyChanged».

К сожалению, я понятия не имею, как это сделать. Никаких дальнейших инструкций нет, и поэтому я надеюсь, что кто-то здесь сможет проинструктировать меня / предоставить пример того, что еще нужно сделать, чтобы вызвать пользовательские процедуры для этих событий. Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос