NDIS ÇÁ·ÎÅäÄÝ µå¶óÀ̹öÀÇ DriverEntry
NTSTATUS
DriverEntry (
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
);
|
DriverEntry ÇÔ¼ö´Â ½Ã½ºÅÛÀÌ ¿¬°á ÁöÇâ Ŭ¶óÀÌ¾ðÆ®µé°ú stand-alone ÄÝ ¸Å´ÏÀúµéÀ» Æ÷ÇÔÇÑ NDIS ÇÁ·ÎÅäÄÝ È¤Àº ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö¿¡¼ óÀ½ È£ÃâÇÏ´Â ÇÊ¿äÇÑ ÇÔ¼öÀÌ´Ù.
¸Å°³º¯¼ö
- DriverObject
- ÀÌ·¯ÇÑ µå¶óÀ̹ö¸¦ Ç¥½ÃÇÏ´Â µå¶óÀ̹ö °´Ã¼¸¦ °¡¸®Å²´Ù.
- RegistryPath
- µå¶óÀ̹öÀÇ ¼³Ä¡ ½ºÅ©¸³Æ®(.inf)¿¡ ÀÇÇØ ¼³Á¤µÈ µå¶óÀ̹ö ƯÁ¤ ·¹Áö½ºÆ®¸® °æ·Î »ç¾çÀ» °¡¸®Å²´Ù. µå¶óÀ̹ö ¼³Ä¡ ½ºÅ©¸³Æ®µé¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸¿¡ ´ëÇØ¼ Setup, Plug & Play, Power Management Design Guide and Reference¸¦ ºÁ¶ó.
¸®Åϰª
DriverEntry´Â ¸¸¾à µå¶óÀ̹ö°¡ ¼º°øÀûÀ¸·Î NDIS ÇÁ·ÎÅäÄÝ·Î µî·ÏµÈ´Ù¸é, STATUS_SUCCESS ȤÀº µ¿µîÇÑ NDIS_STATUS_SUCCESS¸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à DriverEntryÇÔ¼ö°¡ Ä¿³Î ¸ðµå Áö¿ø ·çƾ¿¡ ÀÇÇØ ȤÀº NdisXxx ÇÔ¼öµé¿¡ ÀÇÇØ ¸®ÅÏµÈ ¿¡·¯ »óŸ¦ Àü´ÞÇÔÀ¸·Î½á ÃʱâȰ¡ ½ÇÆÐÇÑ´Ù¸é, µå¶óÀ̹ö´Â ·ÎµåµÇÁö ¾Ê°í ³²À» °ÍÀÌ´Ù. DriverEntry ÇÔ¼ö´Â µ¿±âÀûÀ¸·Î ½ÇÇàÇØ¾ß ÇÑ´Ù.; Áï STATUS_PENDING ȤÀº µ¿µîÇÑ NDIS_STATUS_PENDINGÀ» ¸®ÅÏÇÒ ¼ö ¾ø´Ù.
ÁÖ¼®
¸ðµç ŸÀÔÀÇ NDIS ÇÁ·ÎÅäÄÝ µå¶óÀ̹öÀÇ DriverEntry ÇÔ¼ö´Â NDIS ¶óÀ̺귯¸®·Î µå¶óÀ̹öÀÇ ProtocolXxx ¿£Æ®¸® Æ÷ÀÎÆ®µéÀ» µî·ÏÇϱâ À§ÇØ NdisRegisterProtocol ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ¸ðµç ŸÀÔµéÀÇ NDIS ÇÁ·ÎÅäÄݵéÀº plug and play¸¦ Áö¿øÇϱâ À§ÇØ ¿ÏÀüÇÑ ±â´ÉÀÇ ProtocolBindAdapter ÇÔ¼ö¿Í ProtocolUnbindAdapter ÇÔ¼öµéÀ» µî·ÏÇØ¾ß ÇÑ´Ù. ÀϹÝÀûÀ¸·Î, DriverEntry ÇÔ¼ö´Â STATUS_SUCCESS ȤÀº NDIS_STATUS_SUCCESS·Î Á¦¾î¸¦ ¸®ÅÏÇϱâ Àü¿¡ ´ÜÁö NdisRegisterProtocol ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.
NDIS Á¤ÀÇ ProtocolXxx ÇÔ¼öµé¿¡ Ãß°¡ÀûÀ¸·Î Ç¥ÁØ Ä¿³Î ¸ðµå µå¶óÀ̹ö ·çƾµéÀÇ ÁýÇÕµéÀ» ÀͽºÆ÷Æ®ÇÏ´Â ¾î¶² ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â DriverEntry ÇÔ¼ö¿¡ Àü´ÞµÇ´Â ÁÖ¾îÁø µå¶óÀ̹ö °´Ã¼¿¡ ÀÌ·¯ÇÑ µå¶óÀ̹ö ·çƾµéÀ» À§ÇÑ ¿£Æ®¸® Æ÷ÀÎÆ®µéÀ» ¼³Á¤ÇØ¾ß ÇÑ´Ù. ±×·¯ÇÑ ÇÁ·ÎÅäÄÝ µå¶óÀ̹öÀÇ DriverEntry ÇÔ¼öÀÇ ±â´É¿¡ ´ëÇØ ´õ ¸¹Àº Á¤º¸´Â Setup, Plug and Play, Power Management Design Guide¿Í ¸¶Âù°¡Áö·Î Kernel-Mode Driver Design Guide ¸¦ ºÁ¶ó.TDI Àü¼Û °èÃþ ÇÁ·ÎÅäÄݵ鿡 ÀÇÇØ ÀͽºÆ÷Æ®µÇ´Â TdiDispatchXxx ·çƾµé¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸¿¡ ´ëÇØ Part 3À» ºÁ¶ó.
µå¶óÀ̹ö°¡ ³×Æ®¿öÅ© I/O ¿¬»êµéÀ» ½ÇÇàÇϱâ À§ÇØ ÇÊ¿äÇÑ ÀÚ¿øµéÀ» ÇÒ´çÇÏ´Â ½Ãµµ°¡ ½ÇÆÐÇÑ´Ù¸é, DriverEntry ÇÔ¼ö´Â ÀÌ¹Ì STATUS_SUCCESS ȤÀº NDIS_STATUS_SUCCESS¿Í ´Ù¸¥ »óÅ·ΠÁ¦¾î¸¦ ¸®ÅÏÇϱâ Àü¿¡ ÀÌ¹Ì ÇÒ´çÇÑ ¸ðµç ÀÚ¿øµéÀ» ÇØÁ¦ÇØ¾ß ÇÑ´Ù.
NdisRegisterProtocol ÇÔ¼ö°¡ È£ÃâÇÑ ÈÄ, ¿¬°á ÁöÇâ Ŭ¶óÀÌ¾ðÆ® ÇÁ·ÎÅäÄݵéÀº ¿¬¼ÓÀûÀ¸·Î NDIS¿¡ ±×µéÀÇ ProtocolClXxx ÇÔ¼öµéÀ» µî·ÏÇϱâ À§ÇØ ProtocolCoAfRegisterNotify ÇÔ¼öµé·ÎºÎÅÍ NdisClOpenAddressFamily ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. À¯»çÇϰÔ, ¿¬°á ÁöÇâ È£Ãâ °ü¸®ÀÚµé°ú MCM µå¶óÀ̹öµéÀº °è¼ÓÀûÀ¸·Î ProtocolBindAdapter ÇÔ¼öµé·ÎºÎÅÍ NdisCmRegisterAddressFamily ÇÔ¼ö¸¦ È£ÃâÇϰųª ȤÀº ±×µéÀÇ ProtocolCmXxx ÇÔ¼öµéÀ» µî·ÏÇϱâ À§ÇØ °¢°¢ MiniportInitialize ÇÔ¼öµé·ÎºÎÅÍ NdisMCmRegisterAddressFamily ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
¾Æ·¡ NIC µå¶óÀ̹öÀÇ native ÇÁ·¹ÀÓ Æ÷¸ËÀ» »óÀ§ ·¹º§ ÇÁ·ÎÅäÄÝÀ» À§ÇØ ¶Ç ÇϳªÀÇ Æ÷¸ËÀ¸·Î ÀüȯÇÏ´Â Çϳª¿Í °°ÀÌ NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö¸¦ ¾î¶² NdisXxx ÇÔ¼öµé·Î ÇØ¼®µÇÁö ¾ÊÀº DriverEntry ÇÔ¼ö¿¡ ´ëÇÑ ÀÔ·Â ¸Å°³º¯¼öµéÀ» Àü´ÞÇÑ´Ù.
Ç×»ó, ±×·¯ÇÑ NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹öÀÇ DriverEntry ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº ¼ø¼·Î ´ÙÀ½ÀÇ NdisXxx ÇÔ¼öµéÀ» È£ÃâÇÑ´Ù.
- µå¶óÀ̹ö´Â ¹Ì´ÏÆ÷Æ®·Î ¸· µî·ÏÇÏ·Á°í ÇÏ´Â °Í¿¡ ´ëÇØ NDIS ¶óÀ̺귯¸®¿¡ ¾Ë¸®±â À§ÇØ NdisMInitializeWrapper ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
- µå¶óÀ̹öÀÇ MiniportXxx ÇÔ¼öµéÀ» µî·ÏÇϱâ À§ÇØ NdisIMRegisterLayeredMiniport ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
- µå¶óÀ̹öÀÇ ProtocolXxx ÇÔ¼öµéÀ» µî·ÏÇϱâ À§ÇØ NdisRegisterProtocol ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
±×·¯ÇÑ ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö´Â NdisRegisterProtocol ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ NDIS ¶óÀ̺귯¸®·Î ProtocolBindAdapter ÇÔ¼ö¿Í ProtocolUnbindAdapter ÇÔ¼öµéÀ» µî·ÏÇØ¾ß ÇÑ´Ù. ProtocolBindAdapter ÇÔ¼ö°¡ ÈÄ¿¡ µå¶óÀ̹ö Ãʱâȸ¦ ¿Ï¼ºÇϱâ À§ÇØ ±×¸®°í ¾Æ·¡ NIC ¹Ì´ÏÆ÷Æ®¿Í ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö¸¦ ¹ÙÀεåÇϱâ À§ÇØ È£ÃâµÉ °ÍÀÌ´Ù.
È¿À²ÀûÀ¸·Î, NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹öÀÇ DriverEntry ÇÔ¼ö´Â NdisMInitializeWrapper ÇÔ¼ö·Î ±×°ÍÀ» Àü´ÞÇÑ ÈÄ RegistryPath Æ÷ÀÎÅ͸¦ ¹«½ÃÇÒ ¼ö ÀÖ´Ù. ±×·¯ÇÑ µå¶óÀ̹ö´Â ¶ÇÇÑ NdisIMRegisterLayeredMiniport ÇÔ¼ö¿¡ ´ëÇØ ±×°ÍÀ» Àü´ÞÇÑ ÈÄ DriverObject Æ÷ÀÎÅ͸¦ ¹«½ÃÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª, µå¶óÀ̹ö´Â NdisXxx ÇÔ¼öµé¿¡ ´ëÇÑ °è¼ÓÀûÀΠȣÃâµéÀ» À§ÇØ NdisRegisterProtocol ÇÔ¼ö¿¡ ÀÇÇØ ¸®ÅÏµÈ NdisProtocolHandle¿Í NdisIMRegisterLayeredMiniport ÇÔ¼ö¿¡ ÀÇÇØ ¸®ÅÏµÈ DriverHandle¸¦ ÀúÀåÇØ¾ß ÇÑ´Ù. ÀÎÅ͹̵ð¾ù µå¶óÀ̹öÀÇ ProtocolBindAdapter ÇÔ¼ö´Â MiniportInitialize ÇÔ¼ö°¡ ÀÎÅ͹̵ð¾ù µå¶óÀ̹öÀÇ °¡»ó NICÀ» ÃʱâÈÇϱâ À§ÇØ È£ÃâµÇ±â Àü¿¡ È£ÃâµÇ±â Àü¿¡ °¢ ¾Æ·¡ NIC µå¶óÀ̹ö¿Í µå¶óÀ̹ö´Â ¹ÙÀεåÇÑ´Ù. ÀÌ·¯ÇÑ Àü·«Àº NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö°¡ ¹ÙÀεåµÈ ¾Æ·¡ NIC µå¶óÀ̹öÀÇ Æ¯Â¡µé¿¡ µû¶ó °¡»ó NICÀ» ¸¸µå´Â °Í¿¡ ´ëÇØ ÀÚ¿øµéÀ» ÇÒ´çÇϱâ À§ÇØ NDIS ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö¸¦ Çã¶ôÇÑ´Ù.
µðÆúÆ®·Î, DriverEntry ÇÔ¼ö´Â ½Ã½ºÅÛ ¾²·¹µåÀÇ ÄÁÅØ½ºÆ®¿¡¼ IRQL PASSIVE_LEVEL·Î ½ÇÇàÇÑ´Ù.
|