NdisIMRegisterLayeredMiniport
NDIS_STATUS
NdisIMRegisterLayeredMiniport(
IN NDIS_HANDLE NdisWrapperHandle,
IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
IN UINT CharacteristicsLength,
OUT PNDIS_HANDLE DriverHandle
);
|
NdisIMRegisterLayeredMiniport ÇÔ¼ö´Â µå¶óÀ̹ö°¡ ÃʱâÈÇÒ ¶§ NDIS ¶óÀ̺귯¸®¿¡°Ô ÀÎÅ͹̵ð¾ù µå¶óÀ̹öÀÇ MiniportXxx ¿£Æ®¸® Æ÷ÀÎÆ®µé°ú À̸§À» µî·ÏÇÑ´Ù.
¸Å°³º¯¼ö
- NdisWrapperHandle
- NdisMInitializeWrapper ÇÔ¼ö¿¡ ÀÇÇØ ¸®ÅÏµÈ ÇÚµéÀ» ¸®ÅÏÇÑ´Ù.
- MiniportCharacteristics
- È£ÃâÀÚ¿¡ ÀÇÇØ ¼³Á¤µÈ NDIS_XX_MINIPORT_CHARACTERISTICS ±¸Á¶Ã¼¸¦ °¡¸®Å²´Ù. MiniportCharacteristics ±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾú´Ù.
typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
UCHAR MajorNdisVersion;
UCHAR MinorNdisVersion;
UINT Reserved;
W_CHECK_FOR_HANG_HANDLER CheckForHangHandler;
W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler;
W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler;
W_HALT_HANDLER HaltHandler;
W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler;
W_INITIALIZE_HANDLER InitializeHandler;
W_ISR_HANDLER ISRHandler;
W_QUERY_INFORMATION_HANDLER QueryInformationHandler;
W_RECONFIGURE_HANDLER ReconfigureHandler;
W_RESET_HANDLER ResetHandler;
W_SEND_HANDLER SendHandler;
W_SET_INFORMATION_HANDLER SetInformationHandler;
W_TRANSFER_DATA_HANDLER TransferDataHandler;
//
// Version used is V4.0 or V5.0
// with following members
//
W_RETURN_PACKET_HANDLER ReturnPacketHandler;
W_SEND_PACKETS_HANDLER SendPacketsHandler;
W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
//
// Version used is V5.0 with the following members
//
W_CO_CREATE_VC_HANDLER CoCreateVcHandler;
W_CO_DELETE_VC_HANDLER CoDeleteVcHandler;
W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler;
W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler;
W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler;
W_CO_REQUEST_HANDLER CoRequestHandler;
} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS;
NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö´Â ´ÙÀ½°ú °°Àº ¸â¹öµéÀÇ ¾î¶² °ÍÀ» ¼³Á¤Çϱâ Àü¿¡ 0À¸·Î ÀÌ ±¸Á¶Ã¼¸¦ ÃʱâÈÇØ¾ß ÇÑ´Ù.
- MajorNdisVersion
- µå¶óÀ̹ö°¡ »ç¿ëÇÏ´Â NDIS ¶óÀ̺귯¸®ÀÇ ¸ÞÀÌÀú ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. Çö °ªÀº 0x05ÀÌ´Ù. ºñ·Ï NDIS ¶óÀ̺귯¸®´Â NDIS V4.0À» À§ÇØ °³¹ßµÈ Á¸ÀçÇÏ´Â ¹Ì´ÏÆ÷Æ®µéÀ» °è¼ÓÇØ¼ Áö¿øÇÑ´Ù.
- MininorNdisVersion
- µå¶óÀ̹ö´Â »ç¿ëÇÏ´Â NDIS ¶óÀ̺귯¸®ÀÇ ¸¶ÀÌ³Ê ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. Çö °ªÀº 0x00ÀÌ´Ù. ºñ·Ï NDIS ¶óÀ̺귯¸®´Â Á¸ÀçÇÏ´Â µå¶óÀ̹öµéÀ» °è¼ÓÇØ¼ Áö¿øÇÑ´Ù.
- Reserved
- ÀÌ ¸â¹ö´Â ½Ã½ºÅÛ »ç¿ëÀ» À§ÇØ ¿¹¾àµÇ¾ú´Ù.
- CheckForHangHandler
- È£ÃâÀÚÀÇ MiniportCheckForHang ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù. ȤÀº NULLÀÌ µÈ´Ù.
- DisableInterruptHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- EnableInterruptHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- HaltHandler
- È£ÃâÀÚÀÇ MiniportHalt ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- HandleInterruptHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- InitializeHandler
- È£ÃâÀÚÀÇ MiniportInitialize ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- ISRHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- QueryInformationHandler
- È£ÃâÀÚÀÇ MiniportQueryInformation ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- ReconfigureHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- ResetHandler
- È£ÃâÀÚÀÇ MiniportReset ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- SendHandler
- È£ÃâÀÚÀÇ MiniportSend ÇÔ¼ö, MiniportWanSend ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù. È£ÃâÀÚ°¡ MIniportSendPackets ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù¸éÀº NULLÀÌ´Ù.
¸¸¾à µå¶óÀ̹ö°¡ ¸ÖƼ ÆÐŶ º¸³»±âµé ȤÀº ¹Ìµð¾î ƯÁ¤ Á¤º¸¸¦ Á¦°øÇÑ´Ù¸éÀº, ±× ´ë½Å¿¡ SendPacketsHandler ¸â¹ö¸¦ ¼³Á¤Çϰí ÀÌ ¸â¹ö´Â NULLÀ» ¼³Á¤ÇÑ´Ù.
- SetInformationHandler
- È£ÃâÀÚÀÇ MiniportSetInformation ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.
- TransferDataHandler
- ÀÖÀ¸¸éÀº È£ÃâÀÚÀÇ MiniportTransferData ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤Çϰųª ¾Æ´Ï¸éÀº NULLÀÌ´Ù. ÀÌ·¯ÇÑ ¹Ì´ÏÆ÷Æ® ÇÔ¼ö´Â ¸¸¾à È£ÃâÀÚ°¡ WAN NICÀÇ µå¶óÀ̹ö°¡ ¾Æ´Ï°Å³ª È£ÃâÀÚ°¡ ¸ÖƼ ÆÐŶ ¼ö½ÅµéÀ» Á¦°øÇؼ ReturnPacketHandler¿¡ MiniportReturnPacket ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ Á¦°øÇÏÁö ¾Ê´Â´Ù¸éÀº ÇÊ¿äµÈ´Ù.
- ReturnPacketHandler
- ÀÖÀ¸¸éÀº È£ÃâÀÚÀÇ MiniportReturnPacket ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÏ°í ¾Æ´Ï¸éÀº NULLÀÌ´Ù.
- SendPacketsHandler
- ÀÖÀ¸¸éÀº È£ÃâÀÚÀÇ MiniportSendPackets ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÏ°í ¾Æ´Ï¸éÀº NULLÀÌ´Ù.
- AllocateCompleteHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- CoCreateVcHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- CoDeleteVcHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- CoActivateVcHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- CoDeactivateVcHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- CoSendPacketsHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- CoRequestHandler
- NULLÀ» ÁöÁ¤ÇÑ´Ù.
- CharacteristicsLength
- È£ÃâÀÚ Á¦°ø Ư¼º ¹öÆÛÀÇ ¹ÙÀÌÆ® ±æÀ̸¦ ÁöÁ¤ÇÑ´Ù. MajorNdisVersionÀÇ °ª¿¡ ÀÇÁ¸Çϸé¼, ÀÌ ¸Å°³º¯¼ö´Â ¸¸¾à µå¶óÀ̹ö°¡ NDIS50_MINIPORT_CHARACTERISTICS ±¸Á¶Ã¼¸¦ Á¦°øÇÑ´Ù¸éÀº sizeof(NDIS50_MINIPORT_CHARACTERISTICS)¸¦ Á¦°øÇϰųª ¸¸¾à µå¶óÀ̹ö°¡ NDIS40_MINIPORT_CHARACTERISTICS ±¸Á¶Ã¼¸¦ Á¦°øÇÑ´Ù¸éÀº sizeof(NDIS40_MINIPORT_CHARACTERISTICS)¸¦ Á¦°øÇÑ´Ù.
¸¸¾à µå¶óÀ̹ö°¡ sources ÆÄÀϳ»¿¡ ºôµå ¸í·É¾î NDIS50_MINIPORT (ȤÀº NDIS40_MINIPORT)¸¦ Æ÷ÇÔÇϰųª µå¶óÀ̹ö °³¹ßÀÚ°¡ -NDIS50_MINIPORT(ȤÀº ..40..) ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÑ´Ù¸éÀº, ÀÌ ¸Å°³º¯¼ö´Â µå¶óÀ̹ö°¡ ºôµåµÉ ¶§ ¼³Á¤µÈ´Ù.
- DriverHandle
- ¸¸¾à È£ÃâÀÌ ¼º°øÀûÀ̶ó¸éÀº NdisIMRegisterLayeredMiniport ÇÔ¼ö´Â È£ÃâÀÚ°¡ ÀúÀåÇØ¾ß ÇÏ´Â ÇÚµéÀ» ¸®ÅÏÇÏ´Â º¯¼ö¸¦ °¡¸®Å²´Ù. È£ÃâÀÚ´Â °è¼ÓÇØ¼ ÀÌ ÇÚµéÀ» ProtocolBindAdapter ÇÔ¼ö·ÎºÎÅÍ Ç×»ó NdisIMInitializeDeviceInstance ÇÔ¼ö¿¡ ´ëÇØ ÀÌ ÇÚµéÀ» Àü´ÞÇØ¾ß ÇÑ´Ù.
¸®Åϰª
NdisIMRegisterLayeredMiniport ÇÔ¼ö´Â ¸¸¾à ¹Ì´ÏÆ÷Æ®·Î¼ È£Ãâ°¡¸¦ µî·ÏÇÑ´Ù¸éÀº NDIS_STATUS_SUCCESS ¸®ÅÏÇϰųª ´ÙÀ½°ú °°Àº »óÅ °ªµé Áß¿¡ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.
- NDIS_STATUS_BAD_CHARACTERISTICS
- CharacteristicsLength´Â MiniportCharacteristics¿¡ ¹öÆÛ³»¿¡ ÁöÁ¤µÈ MajorNdisVersionÀ» À§ÇØ ³Ê¹« ÀÛ´Ù.
- NDIS_STATIS_BAD_VERSION
- characteristics ±¸Á¶Ã¼³»¿¡ ÁöÁ¤µÈ MajorNdisVersion ȤÀº MinorNdisVersionÀº À¯È¿ÇÏÁö ¾Ê´Ù.
- NDIS_STATUS_RESOURCES
- °¡´ÉÇÑÇÑ ¸Þ¸ð¸®¿Í °°Àº ÀÚ¿øµéÀº ºÎÁ·Àº NDIS ¶óÀ̺귯¸®°¡ ¹Ì´ÏÆ÷Æ®·Î¼ È£ÃâÀÚ¸¦ µî·ÏÇÏ´Â °ÍÀ» ¸·´Â´Ù.
- NDIS_STATUS_FAILURE
- ÀÌ °ªÀº ¼±Çà ¿¡·¯µéÀÇ ¾Æ¹«°Íµµ µî·ÏÀ» ½ÇÆÐ·Î ÇÏÁö ¾Ê¾ÒÀ» ¶§ µðÆúÆ® ¿¡·¯ »óÅÂÀÌ´Ù. ¿¹¸¦ µé¾î, ¸¸¾à NDIS ¶óÀ̺귯¸®°¡ µå¶óÀ̹öÀÇ À̹ÌÁö¸¦ ·ÎµåÇÒ ¼ö ¾ø°í ½Ã½ºÅÛ ¸Þ¸ð¸®¿¡ lockµÉ ¼ö ¾ø´Ù¸éÀº, ÀÌ ¿¡·¯¸¦ ¸®ÅÏÇÑ´Ù.
ÁÖ¼®
MiniportXxx ÇÔ¼öµé°ú ProtocolXxx ÇÔ¼öµéÀ» ÀͽºÆ÷Æ®ÇÏ´Â ¾î¶² NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö´Â Ư¼º ±¸Á¶Ã¼¸¦ ¼³Á¤Çϰí DriverEntry ÇÔ¼ö°¡ NdisMInitializeWrapper ÇÔ¼ö¸¦ È£ÃâÇÑ ÈÄ DriverEntry ÇÔ¼ö·ÎºÎÅÍ NdisIMRegisterLayeredMiniport ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÌ ±¸Á¶Ã¼´Â NDIS ¶óÀ̺귯¸®ÀÇ ³»ºÎ ÀúÀå °ø°£¿¡ NdisIMRegisterLayeredMiniport ÇÔ¼ö ¿ä±¸¿¡ º¹»çµÇ¾îÁø´Ù. ±×·¯¹Ç·Î, ÀÏ´Ü µî·ÏµÈ´Ù¸éÀº, ±×·¯ÇÑ µå¶óÀ̹ö´Â Çڵ鷯 ÇÔ¼öµéÀ» º¯ÈÇÒ ¼ö ¾ø´Ù.
±×·¯ÇÑ NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö°¡ ¼º°øÀûÀ¸·Î NdisIMRegisterLayeredMiniport ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù¸éÀº, NDIS ¶óÀ̺귯¸®·Î ProtocolXxx ÇÔ¼öµéÀ» µî·ÏÇϱâ À§ÇØ NdisRegisterProtocol ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ±×·¯ÇÑ µå¶óÀ̹ö´Â Ç×»ó ProtocolBindAdapter ÇÔ¼ö¿Í ProtocolUnbindAdapter ÇÔ¼öµéÀ» °¡Áø´Ù. ProtocolBindAdapter ÇÔ¼ö´Â ¾Æ·¡ NIC µå¶óÀ̹ö°¡ ¼º°øÀûÀ¸·Î ÃʱâȵǾîÁú ¶§, ´ÙÀ½ È£ÃâµÇ¾îÁú °ÍÀÌ´Ù. ProtocolBindAdapter ÇÔ¼ö´Â ±×¸®°í³ª¼ NdisOpenAdapter ÇÔ¼ö·Î ±×·¯ÇÑ NIC µå¶óÀ̹ö¿¡ ´ëÇÑ ¹ÙÀεùÀ» ¸¸µé ¼ö ÀÖ´Ù.
NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö´Â ¸¸¾à ¾Æ·¡ NIC µå¶óÀ̹ö°¡ ¸ÖƼ ÆÐŶ º¸³»±âµéÀ» Áö¿øÇØ¾ß Çϰųª ȤÀº »óÀ§ ·¹º§ ÇÁ·ÎÅäÄÝ¿¡¼ ÆÐŶ ¹è¿·Î º¸³»¾îÁú ¶§ ÆÐŶ ¿ì¼±±Ç°ú °°Àº ¹Ìµð¾î ƯÁ¤ Á¤º¸¸¦ ¼ÒºñÇÑ´Ù¸éÀº(consume) MiniportSendPackets ÇÔ¼ö¸¦ °¡Á®¾ß ÇÑ´Ù. NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö´Â ¸¸¾à ¾Æ·¡ NIC µå¶óÀ̹ö°¡ ¸ÖƼ ÆÐŶ ¼ö½Å ÀεðÄÉÀÌ¼Ç Áö¿øÇѴٰųª ȤÀº ¹Ìµð¾î ƯÁ¤ Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â ÆÐŶ ¹è¿µéÀ» ÀεðÄÉÀÌÆ®ÇÑ´Ù¸éÀº MiniportReturnPacket ÇÔ¼ö¸¦ °¡Á®¾ß ÇÑ´Ù. NDIS ¶óÀ̺귯¸®´Â ¾Æ·¡ NIC µå¶óÀ̹ö¿Í ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö¸¦ À§ÇØ ÇϳªÀÇ ÆÐŶ Àü¼ÛµéÀ» Áö¿øÇÏ´Â »óÀ§ ·¹º§ ÇÁ·ÎÅäÄÝ »çÀÌ¿¡ Àü¼ÛµÈ ÆÐŶ ¹è¿µéÀ» ´Ù·é´Ù.
NdisIMRegisterLayeredMiniport ÇÔ¼öÀÇ È£ÃâÀÚµéÀº IRQL PASSIVE_LEVEL¿¡¼ ½ÇÇàÇÑ´Ù.
|