NdisRegisterProtocol
VOID
NdisRegisterProtocol(
OUT PNDIS_STATUS Status,
OUT PNDIS_HANDLE NdisProtocolHandle,
IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics,
IN UINT CharacteristicsLength
);
|
NdisRegisterProtocolÀº NDIS µå¶óÀ̹öÀÇ ProtocolXxx ¿£Æ®¸® Æ÷ÀÎÆ®µé°ú µå¶óÀ̹ö¸¦ ÃʱâÈÇÒ ¶§ NDIS ¶óÀ̺귯¸®¿¡ À̸§À» µî·ÏÇÑ´Ù.
¸Å°³º¯¼ö
- Status
- ÀÌ ÇÔ¼ö°¡ ¸®ÅÏÇÒ ¶§ ´ÙÀ½°ú °°Àº °ª Áß Çϳª°¡ µÉ ¼ö Àִ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù.
- NDIS_STATUS_SUCCESS
- NDIS ¶óÀ̺귯¸®´Â ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö·Î¼ È£ÃâÀÚ¸¦ µî·ÏÇÑ´Ù.
- NDIS_STATUS_BAD_CHARACTERISTICS
- CharacteristicsLength°¡ ProtocolCharacteristics ¹öÆÛ³»¿¡ ÁöÁ¤µÈ MajorNdisVersion¸¦ À§ÇØ ³Ê¹« ÀÛ´Ù.
- NDIS_STATUS_BAD_VERSION
- ProtocolCharacteristics ¹öÆÛ³»¿¡ ÁöÁ¤µÈ MajorNdisVersionÀÌ À¯È¿ÇÏÁö ¾Ê´Ù.
- NDIS_STATUS_RESOURCES
- °¡´ÉÇÑ ¸Þ¸ð¸®ÀÎ ÀÚ¿øÀÇ ºÎÁ·ÀÌ NDIS ¶óÀ̺귯¸®°¡ È£ÃâÀÚ¸¦ µî·ÏÇÏ´Â °ÍÀ» ¹æÇØÇÑ´Ù.
- NdisProtocolHandle
- ÀÌ ÇÔ¼ö°¡ µî·ÏµÈ µå¶óÀ̹ö¸¦ Ç¥½ÃÇÏ´Â ÇÚµéÀ» ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù.
- ProtocolCharacteristics
- È£ÃâÀÚ¿¡ ÀÇÇØ ¼³Á¤µÈ NDIS_PROTOCOL_CHARACTERISTICS ±¸Á¶Ã¼¸¦ °¡¸®Å²´Ù. ProtocolCharacteristicsÀÇ ±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù.
typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
UCHAR MajorNdisVersion;
UCHAR MinorNdisVersion;
UINT Reserved;
OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler;
CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler;
SEND_COMPLETE_HANDLER SendCompleteHandler;
TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler;
RESET_COMPLETE_HANDLER ResetCompleteHandler;
REQUEST_COMPLETE_HANDLER RequestCompleteHandler;
RECEIVE_HANDLER ReceiveHandler;
RECEIVE_COMPLETE_HANDLER ReceiveCompletehandler;
STATUS_HANDLER StatusHandler;
STATUS_COMPLETE_HANDLER StatusCompleteHandler;
NDIS_STRING Name;
//
// MajorNdisVersion must be set to 0x04
// with any of the following members
//
RECEIVE_PACKET_HANDLER ReceivePacketHandler;
BIND_HANDLER BindAdapterHandler;
UNBIND_HANDLER UnbindAdapterHandler;
TRANSLATE_HANDLER TranslateHandler;
UNLOAD_PROTOCOL_HANDLER UnloadHandler;
} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS;
µå¶óÀ̹ö´Â ´ÙÀ½°ú °°Àº ¸â¹ö¸¦ ¼³Á¤Çϱâ Àü¿¡ ÀÌ ±¸Á¶Ã¼¸¦ 0À¸·Î ÃʱâÈÇØ¾ß ÇÑ´Ù.
- MajorNdisVersion
- µå¶óÀ̹ö°¡ »ç¿ëÇÏ´Â NDIS ¶óÀ̺귯¸®ÀÇ ¸ÞÀÌÀú ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. ºñ·Ï NDIS ¶óÀ̺귯¸®°¡ NDIS V3.0À» À§ÇØ °³¹ßµÈ Á¸ÀçÇÏ´Â µå¶óÀ̹öµéÀ» °è¼ÓÇØ¼ Áö¿øÇÏÁö¸¸Àº, ÇöÀç °ªÀº 0x04ÀÌ´Ù. ÀÌ ¸â¹ö´Â È£ÃâÀڴ ȣÃâÀÚ°¡ NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö³ª È£ÃâÀÚ°¡ Name ´ÙÀ½¿¡ ¾î¶² ¸â¹öµé ³»¿¡ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ¼³Á¤ÇÑ´Ù¸éÀº 0x04·Î ¼³Á¤µÇ¾îÁ®¾ß ÇÑ´Ù.
- MinorNdisVersion
- minor NDIS ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. ºñ·Ï NDIS°¡ °è¼ÓÇØ¼ Á¸ÀçÇÏ´Â µå¶óÀ̹öµéÀ» Áö¿øÇÏÁö ¸¸Àº ÇöÀç °ªÀº 0x00ÀÌ´Ù.
- Reserved
- ÀÌ °ªÀº ½Ã½ºÅÛ »ç¿ëÀ¸·Î ¿¹¾àµÇ¾ú´Ù.
- OpenAdapterCompleteAdapter
- È£ÃâÀÚÀÇ ProtocolOpenAdapterComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- CloseAdapterCompleteHandler
- È£ÃâÀÚÀÇ ProtocolCloseAdapterComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- SendCompleteHandler
- È£ÃâÀÚÀÇ ProtocolSendComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- TransferDataCompleteHandler
- È£ÃâÀÚÀÇ ProtocolTransferDataComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- ResetCompleteHandler
- È£ÃâÀÚÀÇ ProtocolResetComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- RequestCompleteHandler
- È£ÃâÀÚÀÇ ProtocolRequestComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- ReceiveHandler
- È£ÃâÀÚÀÇ ProtocolReceive ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÑ´Ù.
- ReceiveCompleteHandler
- È£ÃâÀÚÀÇ ProtocolReceiveComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- StatusHandler
- È£ÃâÀÚÀÇ ProtocolStatus ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- StatusCompleteHandler
- È£ÃâÀÚÀÇ ProtocolStatusComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- Name
- µå¶óÀ̹ö¸¦ À̸§Áö¿ì´Â ½Ã½ºÅÛ µðÆúÆ® ¹®ÀÚ ¼¼Æ®·Î ¹öÆÛÈµÈ È£ÃâÀÚ ÃʱâÈ Ä«¿îÆ®ÈµÈ ¹®ÀÚ¿ÀÇ Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù. À©µµ¿ìÁî NT µå¶óÀ̹ö¿¡ ´ëÇÏ¿©, ÀÌ ¹®ÀÚ¿Àº À¯´ÏÄÚµå ¹®ÀÚµéÀ» Æ÷ÇÔÇÑ´Ù.
NdisRegisterProtocolÀº Á¦°øµÈ ¹®ÀÚ¿À» ´ë¹®ÀÚ·Î °íÄ¡°í, ±×¸®°í ³ª¼ ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö ÀÛ¼ºÀÚ´Â ÀÌ¹Ì µî·ÏµÈ ÇÁ·ÎÅäÄÝ À̸§ÀÇ ÄÉÀ̽º¸¦ º¯ÇÏ´Â °ÍÀÌ µå¶óÀ̹ö¸¦ À§ÇØ À¯ÀÏÇÑ À̸§À» ¸¸µå´Â °ÍÀ» ÃßÃøÇÒ ¼ö ¾ø´Ù.
- ReceivePacketHandler
- È£ÃâÀÚÀÇ ProtocolReceivePacket ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù. ¾î¶² °ªÀ̵ç NULL °ªÀÌ´Ù. ¸ÖƼ ÆÐŶ ÀεðÄÉÀ̼ǵéÀ» Áö¿øÇÏ´Â ¾î¶² µå¶óÀ̹ö¿Í ¹ÙÀεåÇÑ ÇÁ·ÎÅäÄݵéÀº ±×µéÀÇ ÆÛÆ÷¸Õ½º¸¦ Çâ»ó½Ã۱â À§ÇØ ProtocolReceivePacket ÇÔ¼ö¸¦ Á¦°øÇØ¾ß ÇÑ´Ù.
- BindAdapterHandler
- È£ÃâÀÚÀÇ ProtocolBindAdapter ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù. ¾î¶² °ªÀ̵ç NULLÀÌ´Ù. NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹öµéÀº Ç×»ó ProtocolBindAdapter ÇÔ¼ö¸¦ Á¦°øÇϰí, ¾çÂÊÀº ±×µéÀÌ PnP-ready·Î ¸¸µé°í ÀÎÅ͹̵ð¾ùÀÌ NdisIMRegisterLayeredMiniport¸¦ È£ÃâÇϵµ·Ï Çã¶ôÇÏ°í ¾Æ·¡ °èÃþ NIC µå¶óÀ̹öµéÀÌ ÃʱâȵǾúÀ» ¶§±îÁö Ç® µå¶óÀ̹ö Ãʱâȸ¦ Áö¿¬½ÃŰ°Ô ÇÑ´Ù.
- UnbindAdapterHandler
- È£ÃâÀÚÀÇ ProtocolUnbindAdapter ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù. ¾î¶² °ªÀ̵çÁö NULLÀÌ´Ù. ProtocolBindAdapter ÇÔ¼ö¸¦ Á¦°øÇϸéÀº NDIS µå¶óÀ̹öµéÀ» ¶ÇÇÑ ProtocolUnbindAdapter ÇÔ¼ö¸¦ Á¦°øÇØ¾ß ÇÑ´Ù.
- TranslateHandler
- È£ÃâÀÚÀÇ ProtocolTranslateÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à ¾î¶² °ªÀ̵ç NULLÀÌ´Ù. ±×·¯ÇÑ ÇÔ¼ö´Â ÇöÀç È£ÃâµÇÁö ¾Ê°í ÀÌ ¸â¹ö´Â PnP-aware(ÀνÄ) ÇÁ·ÎÅäÄݵ鿡 ÀÇÇØ ¹Ì·¡ »ç¿ëÀ» À§ÇØ ¿¹¾àµÇ¾ú´Ù.
- UnloadHandler
- À©µµ¿ìÁî NT ÇÁ·ÎÅäÄÝ µå¶óÀ̹öµéÀ» À§ÇØ NULL·Î ¼³Á¤µÈ´Ù.
- CharacteristicsLength
- ProtocolCharacteristics¿¡¼ ±¸Á¶Ã¼ÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à ºôµå µð·ºÆ¼ºê(Áö½ÃÀÚ)°¡ NDIS40ÀÌ #include ndis.h ¾Õ¿¡ ¼Ò½ºÆÄÀϵ鿡 ÁöÁ¤µÈ´Ù¸éÀº ÀÌ °ªÀº ÀÚµ¿ÀûÀ¸·Î Á¦°øµÈ´Ù.
ÁÖ¼®
CharacteristicsLength¿¡ Á¦°øµÈ °ªÀº ÀÌ ±¸Á¶Ã¼¿¡¼ Á¦°øµÈ MajorNdisVersion¿¡ ÀÇÇØ ÁöÁ¤µÈ Àû¾îµµ sizeof(NDISXX_PROTOCOL_CHARACTERISTICS)°¡ µÉ°ÍÀÌ´Ù.
ÃÖ´ëÀÇ °¡´ÉÇÑ ÆÛÆ÷¸Õ½º¸¦ À§ÇÏ¿©, ¸ÖƼ ÆÐŶ ¸®½ººêµéÀ» Á¦°øÇÏ´Â NIC µå¶óÀ̹ö À§¿¡ À§Ä¡ÇÏ´Â ¾î¶² ÇÁ·ÎÅäÄÝÀº ProtocolReceivePacket ÇÔ¼ö¸¦ Á¦°øÇØ¾ß ÇÑ´Ù. ¸ÖƼ ÆÐŶ º¸³»±âµéÀ» Á¦°øÇÏ´Â ¾î¶² NIC µå¶óÀ̹ö´Â ¸ÖƼ ÆÐŶ ¸®½ººêµéÀ» ÀεðÄÉÀÌÆ®Çϱ⠶ÇÇÑ ½±´Ù.
ProtocolReceivePacket ÇÔ¼ö¸¦ Á¦°øÇÏ´Â µå¶óÀ̹ö´Â ProtocolReceive ÇÔ¼ö¸¦ ¶ÇÇÑ Á¦°øÇØ¾ß ÇÑ´Ù. NdisRegisterProtocol¿¡ ´ëÇÑ ¼º°øÀûÀΠȣÃâÈÄ, µå¶óÀ̹ö´Â Á¦°øµÈ ProtocolXxx ÇÔ¼öµéÀÇ ¼³Á¤À» ¹Ù²Ü ¼ö ¾ø´Ù.
¼º°øÀûÀ¸·Î µî·ÏµÈ µå¶óÀ̹ö´Â NdisProtocolHandle¿¡ ¸®ÅÏµÈ ÇÚµéÀ» ÀúÀåÇØ¾ß ÇÑ´Ù. ±×°ÍÀº µå¶óÀ̹ö°¡ °è¼ÓÇØ¼ È£ÃâÇÏ´Â ´Ù¸¥ NdisXxx ÇÔ¼öµé¿¡ ´ëÇÑ ¸Å°³º¯¼ö¿¡ ÇÊ¿äÇÏ´Ù.
NdisRegisterProtocolÀÇ È£ÃâÀÚ´Â IRQL PASSIVE_LEVEL ½ÇÇàÇÑ´Ù.
|