Читаем Как писать драйвера полностью

 // start driver instances.

 //

 NdisMInitializeWrapper(&WrapperHandle, DriverObject, RegistryPath, NULL);

 NdisZeroMemory(&MChars, sizeof(NDIS_MINIPORT_CHARACTERISTICS));

 MChars.MajorNdisVersion = 4;

 MChars.MinorNdisVersion = 0;

 MChars.InitializeHandler = MPInitialize;

 MChars.QueryInformationHandler = MPQueryInformation;

 MChars.SetInformationHandler = MPSetInformation;

 MChars.ResetHandler = MPReset;

 MChars.TransferDataHandler = MPTransferData;

 MChars.HaltHandler = MPHalt;

 //

 // We will disable the check for hang timeout so we do not

 // need a check for hang handler!

 //

 MChars.CheckForHangHandler = NULL;

 MChars.SendHandler = MPSend;

 MChars.ReturnPacketHandler = MPReturnPacket;

 //

 // Either the Send or the SendPackets handler should be specified.

 // If SendPackets handler is specified, SendHandler is ignored

 //

 // MChars.SendPacketsHandler = MPSendPackets;

 Status = NdisIMRegisterLayeredMiniport(WrapperHandle, &MChars, sizeof(MChars), &DriverHandle);

 ASSERT(Status == NDIS_STATUS_SUCCESS);

 NdisMRegisterUnloadHandler(WrapperHandle, PtUnload);

 //

 // Now register the protocol.

 //

 NdisZeroMemory(&PChars, sizeof(NDIS_PROTOCOL_CHARACTERISTICS));

 PChars.MajorNdisVersion = 4;

 PChars.MinorNdisVersion = 0;

 //

 // Make sure the protocol-name matches the service-name under which this protocol is installed.

 // This is needed to ensure that NDIS can correctly determine the binding and call us to bind

 // to miniports below.

 //

 NdisInitUnicodeString(&Name, L"SFilter"); // Protocol name

 PChars.Name = Name;

 PChars.OpenAdapterCompleteHandler = PtOpenAdapterComplete;

 PChars.CloseAdapterCompleteHandler = PtCloseAdapterComplete;

 PChars.SendCompleteHandler = PtSendComplete;

 PChars.TransferDataCompleteHandler = PtTransferDataComplete;

 PChars.ResetCompleteHandler = PtResetComplete;

 PChars.RequestCompleteHandler = PtRequestComplete;

 PChars.ReceiveHandler = PtReceive;

 PChars.ReceiveCompleteHandler = PtReceiveComplete;

 PChars.StatusHandler = PtStatus;

 PChars.StatusCompleteHandler = PtStatusComplete;

 PChars.BindAdapterHandler = PtBindAdapter;

 PChars.UnbindAdapterHandler = PtUnbindAdapter;

 PChars.UnloadHandler = NULL;

 PChars.ReceivePacketHandler = PtReceivePacket;

 PChars.PnPEventHandler= PtPNPHandler;

 NdisRegisterProtocol(&Status, &ProtHandle, &PChars, sizeof(NDIS_PROTOCOL_CHARACTERISTICS));

 ASSERT(Status == NDIS_STATUS_SUCCESS);

 NdisIMAssociateMiniport(DriverHandle, ProtHandle);

 return(Status);

}

Майкрософт утверждает что нам нужны 4 функции минимум, присутствующие в DriverEntry:

NdisMInitializeWrapper;

NdisIMRegisterLayeredMiniport;

NdisRegisterProtocol;

NdisIMAssociateMiniport.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных