¹Ì´ÏÆ÷Æ® µå¶óÀ̹öÀÇ DriverEntry

NDIS_STATUS

  DriverEntry(

    IN PVOID  Argument1,

    IN PVOID  Argument2

    );

DriverEntry´Â ½Ã½ºÅÛÀÌ ¾î¶² NDIS µå¶óÀ̹ö¿¡¼­ óÀ½ È£ÃâÇÏ´Â ÇÊ¿äÇÑ ÇÔ¼öÀÌ´Ù.

¸Å°³º¯¼ö

Argument1
½Ã½ºÅÛ Á¦°ø ¸Å°³º¯¼ö¸¦ °¡¸®Å²´Ù. À©µµ¿ìÁî NT µå¶óÀ̹öµé¿¡¼­, À̰ÍÀº ´ÜÁö MiniportXxx ÇÔ¼öµé¿¡°Ô ÀͽºÆ÷Æ®ÇÏ´Â ¾î¶² NDIS µå¶óÀ̹ö¿¡ ºÒÅõ¸íÇÑ(opaque) µå¶óÀ̹ö °´Ã¼¸¦ °¡¸®Å²´Ù.

Argement2
µÎ¹øÂ° ½Ã½ºÅÛ Á¦°ø ¸Å°³º¯¼ö¸¦ °¡¸®Å²´Ù. À©µµ¿ìÁî NT µå¶óÀ̹öµé¿¡¼­, À̰ÍÀº ´ÜÁö MiniportXxx ÇÔ¼öµé¿¡°Ô ÀͽºÆ÷Æ®ÇÏ´Â ¾î¶² NDIS µå¶óÀ̹ö¿¡ ºÒÅõ¸íÇÑ ·¹Áö½ºÆ®¸® °æ·Î¸íÀ» °¡¸®Å²´Ù.
¸®Åϰª

DriverEntry´Â NdisMRegisterMiniport ȤÀº NdisIMRegisterLayeredMiniport¿¡ ÀÇÇØ ¸®ÅÏµÈ °ªÀ» ¸®ÅÏÇÑ´Ù.

ÁÖ¼®

NDIS miniports¿Í intermediate µå¶óÀ̹öµéÀº DriverEntry ÇÔ¼öµé¿¡¼­ µÎ°¡Áö ±âº»ÀûÀÎ ÀϵéÀ» ½ÇÇàÇÑ´Ù:

  1. µå¶óÀ̹ö´Â ¹Ì´ÏÆ÷Æ®·Î¼­ ¸· µî·ÏÇÏ·Á°í ÇÒ ¶§ NDIS ¶óÀ̺귯¸®¿¡°Ô ¾Ë¸®±â À§ÇØ(notify) NdisMInitializeWrapper¸¦ È£ÃâÇÑ´Ù.

    NDIS´Â µå¶óÀ̹ö¸¦ ÃßÀû(track)Çϴµ¥ ÇÊ¿äÇÑ »óŸ¦ ¼³Á¤ÇÏ°í µå¶óÀ̹ö°¡ NdisXxx ±¸¼º°ú ÃʱâÈ­ ÇÔ¼öµé¿¡ ´ëÇÑ °è¼ÓÀûÀΠȣÃâÀ» À§ÇØ ÀúÀåÇÑ NdisWrapperHandle¸¦ ¸®ÅÏÇÑ´Ù.

  2. Àû´çÇÑ ¹öÀü ³Ñ¹ö¿Í µå¶óÀ̹ö Á¦°ø MiniportXxx ÇÔ¼öµéÀ» À§ÇÑ ¿£Æ®¸® Æ÷ÀÎÆ®µéÀ» °¡Áø NDIS_MINIPORT_CHARACTERISTICS ±¸Á¶Ã¼¸¦ ä¿ì°í ³ª¼­ NdisMRegisterMiniport ȤÀº NdisIMRegisterLayeredMiniport¸¦ È£ÃâÇÑ´Ù.

    Ç×»ó, NIC µå¶óÀ̹öµéÀº NdisMRegisterMiniport¸¦ È£ÃâÇÑ´Ù. intermediate µå¶óÀ̹öµéÀº ´ÜÁö MiniportXxx ÇÔ¼öµéÀ» ÀͽºÆ÷Æ®ÇÑ´Ù. Ç×»ó, NDIS intermediate µå¶óÀ̹öµéÀº µå¶óÀ̹ö°¡ ProtocolBindAdapter ÇÔ¼ö·ÎºÎÅÍ NdisIMInitializeDeviceInstance ÇÔ¼ö¸¦ È£ÃâÇÒ¶§±îÁö È¿À²ÀûÀ¸·Î µå¶óÀ̹ö °¡»ó NICÀÇ ÃʱâÈ­¸¦ Áö¿¬ÇÏ´Â NdisIMRegisterLayeredMiniport¸¦ È£ÃâÇÑ´Ù.

DriverEntry´Â NDIS ¶óÀ̺귯¸®°¡ ÀÚ½ÅÀÇ ÀúÀå °ø°£¿¡ °ü·ÃµÈ Á¤º¸¸¦ º¹»çÇÒ ¶§ ½ºÅÿ¡ NDISXXX_MINIPORT_CHARACTERISTICS ±¸Á¶Ã¼¸¦ ÇÒ´çÇÒ ¼ö ÀÖ´Ù. DriverEntry´Â ¸â¹öµé¿¡ ¾î¶² µå¶óÀ̹ö Á¦°ø °ªµéÀ» ¼³Á¤Çϱâ Àü¿¡ ÀÌ ±¸Á¶Ã¼¿¡ ´ëÇÑ ¸Þ¸ð¸®¸¦ NdisZeroMemory¸¦ »ç¿ëÇØ¼­ Ŭ¸®¾îÇØ¾ß ÇÑ´Ù. Çö MajorNdisVersionÀº 0x04¿Í Çö MinorNdisVersionÀº 0x00ÀÌ´Ù. Ư¼º ±¸Á¶Ã¼ ³»¿¡ °¢ XxxHandler ¸â¹ö³»¿¡¼­ DriverEntry´Â µå¶óÀ̹ö Á¦°ø MiniportXxx ÇÔ¼öÀÇ À̸§À» ¼³Á¤ÇØ¾ß ÇÏ°í ¾Æ´Ï¸éÀº ¸â¹ö¸¦ NULL·Î ¼³Á¤ÇØ¾ß ÇÑ´Ù.

NdisMRegisterMiniport¸¦ È£ÃâÇÏ´Â °ÍÀº NdisMRegisterMiniportÀÇ ÄÁÅØ½ºÆ®³»¿¡¼­ ½ÇÇàÇÏ´Â µå¶óÀ̹öÀÇ MiniportInitialize ÇÔ¼ö¸¦ ¾ß±â½ÃŲ´Ù. NdisIMRegisterLayeredMiniport¸¦ È£ÃâÇÏ´Â °ÍÀº µå¶óÀ̹ö°¡ NdisIMInitializeDeviceInstance¸¦ È£ÃâÇÒ ¶§±îÁö MiniportInitialize¿¡ ´ëÇÑ È£ÃâÀ» Áö¿¬ÇÑ´Ù.

NdisMRegisterMiniportÀ» È£ÃâÇÏ´Â µå¶óÀ̹öµéÀº MiniportInitialize ÇÔ¼öµé¿¡ ´ëÇÑ ¹Ù·Î(immediate) È£ÃâÀ» À§ÇØ ÁغñµÇ¾îÁ®¾ß ÇÑ´Ù. ±×·¯ÇÑ µå¶óÀ̹ö´Â ·¹Áö½ºÆ®¸®¿¡ ÀúÀåµÈ, ȤÀº ¾î¶² NIC ƯÁ¤ ÀÚ¿øµéÀ» ¼³Á¤Çϱâ À§ÇØ NdisXxx ¹ö½ºÅ¸ÀÔ Æ¯Á¤ ±¸¼º ÇÔ¼ö¿¡ ´ëÇÑ È£Ãâ·ÎºÎÅÍ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ÃæºÐÇÑ ¼³Ä¡¿Í ±¸¼º Á¤º¸¸¦ °¡Á®¾ß ÇÏ°í µå¶óÀ̹ö°¡ ³×Æ®¿öÅ© I/O ¿¬»êµéÀ» ½ÇÇàÇϴµ¥ ÇÊ¿äÇÏ´Ù. NdisIMRegisterLayeredMiniport¸¦ È£ÃâÇÏ´Â µå¶óÀ̹öµéÀº NdisIMInitializeDeviceInstance¿¡ ´ëÇÑ È£ÃâÀ» ÇÏ´Â ¶Ç ÇϳªÀÇ µå¶óÀ̹ö Á¦°ø ÇÔ¼ö¿¡ ´ëÇÑ MiniportInitialize ÇÔ¼öµé¿¡ ´ëÇÑ È£ÃâÀ» Áö¿¬ÇÑ´Ù. NDIS intermediate µå¶óÀ̹öµéÀº Ç×»ó ProtocolBindAdapter ÇÔ¼öÀ» µî·ÏÇϰí NdisIMRegisterLayeredMiniport ¸¦ È£ÃâÇÑ´Ù. ±×·¡¼­ NDIS´Â ¸ðµç ¾Æ·§°èÃþ NIC µå¶óÀ̹öµéÀÌ ÃʱâÈ­µÈ ÈÄ ProtocolBindAdapter ÇÔ¼ö¸¦ È£ÃâÇÒ °ÍÀÌ´Ù. ÀÌ·¯ÇÑ Àü·«Àº ProtocolBindAdapter ÇÔ¼ö·ÎºÎÅÍ NdisIMInitialzieDeviceInstance¿¡ ´ëÇÑ È£ÃâÀ» ÇÏ´Â NDIS intermediate µå¶óÀ̹ö¿¡°Ô ´ÙÀ½°ú °°Àº °ÍÀ» Á¦°øÇÑ´Ù. MiniportInitialize ÇÔ¼ö°¡ °¡Áö´Â ÀåÁ¡Àº intermediate ÀÌ ÀÌ¹Ì ¹ÙÀεåµÈ ¾Æ·§ °èÃþ NIC µå¶óÀ̹öÀÇ Æ¯Á¤¿¡ ´ëÇØ intermediateÀÇ °¡»ó NICÀ» À§ÇÑ µå¶óÀ̹ö ÇÒ´ç ÀÚ¿øµéÀ» ±¸¼ºÇÑ´Ù.

¸¸¾à NdisMRegisterMiniport ȤÀº NdisIMRegisterLayeredMiniport°¡ NDIS_STATUS_SUCCESS¸¦ ¸®ÅÏÇÏÁö ¾Ê´Â´Ù¸éÀº, DriverEntry´Â NdisWrapperHandle¸¦ À¯ÁöÇϱâ À§ÇÑ ¸Þ¸ð¸®¿Í °°Àº ÇÒ´çµÈ ¾î¶² ÀÚ¿øµéÀ» ÇØÁ¦ÇØ¾ß Çϰí Á¦¾î¸¦ ¸®ÅÏÇϱâ Àü¿¡ NdisTerminateWrapper ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. µå¶óÀ̹ö´Â ¸¸¾à À̰ÍÀÌ ¹ß»ýÇÑ´Ù¸éÀº ·ÎµåµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.

µðÆúÆ®·Î DriverEntry´Â ½Ã½ºÅÛ ¾²·¹µå ÄÁÅØ½ºÆ®¿¡¼­ IRQL PASSIVE_LEVEL¿¡¼­ ½ÇÇàÇÑ´Ù.