NdisMSetAttributesEx

VOID 

  NdisMSetAttributesEx(

    IN NDIS_HANDLE MiniportAdapterHandle,

    IN NDIS_HANDLE MiniportAdapterContext,

    IN UINT  CheckForHangTimeInSeconds  OPTIONAL,

    IN ULONG  AttributeFlags,

    IN NDIS_INTERFACE_TYPE AdapterType

    );

NdisMSetAttributesEx´Â ÃʱâÈ­ÇÏ´Â µ¿¾È °¡»ó NIC ȤÀº È£ÃâÀÚÀÇ NICÀÇ Áß¿äÇÑ Æ¯Â¡µé¿¡ ´ëÇØ NDIS ¶óÀ̺귯¸®¿¡°Ô ¾Ë¸°´Ù.

¸Å°³º¯¼ö

MiniportAdapterHandle
MiniportInitialize¿¡ ´ëÇÑ ÇÚµé ÀÔ·ÂÀ» ÁöÁ¤ÇÑ´Ù.

MiniportAdapterContext
MiniportInitialize¿¡ ÇÒ´ç »óÁÖ ÄÁÅØ½ºÆ® ¿µ¿ªÀ» À§ÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

CheckForHangTimeInSeconds
NDIS´Â MiniportCheckForHang ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÏ´Â ÃÊ´ç ½Ã°£ °£°ÝÀ» ÁöÁ¤ÇÑ´Ù. if any ÀÌ ¸Å°³º¯¼ö¸¦ 0À¸·Î ÁöÁ¤ÇÏ´Â °ÍÀº NDIS°¡ NDISÀÇ µðÆúÆ® 2ÃÊ °£°ÝÀ¸·Î MiniportCheckForHangÀ» È£ÃâÇØ¾ß Çϰí NDIS°¡ NDIS°¡ °è¼ÓÇØ¼­ È£ÃâÀÚ¸¦ Å¥·Î ÀúÀåÇØ¼­ À¯ÁöÇÏ´Â Áö¿¬ º¸³»±â¿Í ¿ä±¸µéÀ» À§ÇØ µðÆúÆ® 4-2 ŸÀÓ ¾Æ¿ô ½Ã°£°£°ÝÀ¸·Î MiniportReset ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÏ´Â °ÍÀ» Áö½ÃÇÑ´Ù.

2º¸´Ù ´õ ³ôÀº °ªÀ» ÁöÁ¤ÇÏ´Â °ÍÀº checkforhang ±×¸®°í timeout °£°ÝµéÀ» È®ÀåÇÑ´Ù. NDIS´Â È£ÃâÀÚ¸¦ À§ÇÑ Å¸ÀӾƿô °£°ÝÀ¸·Î µÎ¹èÀÇ ÁöÁ¤µÈ checkforhang °£°ÝÀ» »ç¿ëÇÑ´Ù.

¸¸¾à È£ÃâÀÚ°¡ AttributeFlags·Î NDIS_ATTRIBUTE_DESERIALIZE¸¦ ¼³Á¤ÇϸéÀº, NDIS´Â ¹Ì´ÏÆ÷Æ®¸¦ À§ÇØ Áö¿¬µÈ º¸³»±âµéÀ» Å¥·Î ÀúÀåÇÏÁö ¾Ê´Â´Ù. ±× ´ë½Å¿¡ ±×·¯ÇÑ ºñÁ÷·ÄÈ­°¡ µÈ µå¶óÀ̹ö´Â µé¾î¿À´Â º¸³»±â ÆÐŶµéÀ» Áï½Ã Àü¼ÛÇϴµ¥ ºÒÃæºÐÇÑ ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖÀ» ¶§¸¶´Ù ³»ºÎÀûÀ¸·Î °è¼ÓÇØ¼­ º¸³»±â ¿ä±¸µéÀÇ ÀÚ½ÅÀÇ Å¥·Î ÀúÀåÇÏ´Â °ÍÀ» °ü¸®ÇØ¾ß ÇÑ´Ù.

AttributeFlags
´ÙÀ½ Ç÷¡±×µéÀÇ Çϳª³ª ȤÀº ±× ÀÌ»óÀ¸·Î(ORed) ¼³Á¤µÉ ¼ö ÀÖ´Â ºñÆ®¸¶½ºÅ©·Î ÁöÁ¤ÇÑ´Ù.

NDIS_ATTRIBUTE_BUS_MASTER
¸¸¾à È£ÃâÀÚ NICÀÌ ¹ö½º¸¶½ºÅÍ DMA ÀåÄ¡À̸éÀº ¼³Á¤µÈ´Ù.

NDIS_ATTRIBUTE_DESERIALIZE
¸¸¾à È£ÃâÀÚ°¡ ºñÁ÷·ÄÈ­ ¹Ì´ÏÆ÷Æ®À̸éÀº ¼³Á¤µÈ´Ù.

NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT
¸¸¾à NDIS°¡ È£ÃâÀÚ¿¡°Ô Å¥¿¡ ÀúÀåµÈ »óÅ·ΠÀ¯ÁöÇÏ´Â Áö¿¬µÈ º¸³»±â ÆÐŶµéÀÌ Å¸ÀӾƿôµÇ´Â °ÍÀ» ½ÃµµÇÏÁö ¾ÊÀ¸¸éÀº ¼³Á¤µÈ´Ù. Á÷·ÄÈ­µÈ ÀÎÅ͹̵ð¾ù µå¶óÀ̹öµéÀº ÀÌ Ç÷¡±×¸¦ ¼³Á¤ÇÏÁö¸¸Àº, NIC µå¶óÀ̹öµéÀº ÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.

NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT
NDIS°¡ È£ÃâÀÚ¿¡°Ô Å¥·Î ÀúÀåµÈ Áö¿¬µÈ Äõ¸® ¼³Á¤ ¿ä±¸µéÀ» ŸÀӾƿôÀ» ½ÃµµÇÏÁö ¾ÊÀ¸¸éÀº ¼³Á¤µÈ´Ù. Á÷·ÄÈ­µÈ ÀÎÅ͹̵ð¾ù µå¶óÀ̹öµéÀº ÀÌ Ç÷¡±×¸¦ ¼³Á¤ÇØ¾ß ÇÏÁö¸¸Àº NIC µå¶óÀ̹ö´Â ÇÏÁö ¾Ê´Â´Ù.

NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER
È£ÃâÀÚ°¡ ÀÎÅ͹̵ð¾ù µå¶óÀ̹öÀ̸éÀº ¼³Á¤ÇÑ´Ù.

NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS
NDIS°¡ ¸¸¾à Token Ring ¿¡·¯µéÀ» Áö½ÃÇÏÁö ¾Ê´Â´Ù¸éÀº Token Ring NIC µå¶óÀ̹öÀÇ MiniportReset ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù¸éÀº ¼³Á¤ÇÑ´Ù.

NDIS_ATTRIBUTE_NO_HALT_ON_SUSPENDED
¸¸¾à NDIS°¡ low-power(sleeping) »óÅ·ÎÀÇ ½Ã½ºÅÛ ÀÌÀüÀü¿¡ µå¶óÀ̹öÀÇ MiniportHalt ÇÔ¼ö°¡ È£ÃâÇÏÁö ¾Ê´Â´Ù¸éÀº ¼³Á¤ÇÑ´Ù. Çϵå¿þ¾î À¯Áö »óÅ¿¡ ÀÇÁ¸ÇÏ´Â µå¶óÀ̹öµéÀº ÀÌ Ç÷¡±×¸¦ ¼³Á¤ÇÏÁö ¾Ê´Â´Ù.

AdapterType
NICÀÌ ¿¬°áµÈ I/O ¹ö½º ŸÀÔÀΠȣÃâÀÚÀÇ NICÀÇ I/O ¹ö½º ÀÎÅÍÆäÀ̽º ŸÀÔÀ» ÁöÁ¤ÇÑ´Ù. ´ÙÀ½°ú °°Àº °ª Áß Çϳª°¡ µÈ´Ù.

NdisInterfaceInternal
È£½ºÆ® ƯÁ¤ ³»ºÎ ÀÎÅÍÆäÀ̽º¸¦ ÁöÁ¤ÇÑ´Ù.

NdisInterfaceIsa
ISA ÀÎÅÍÆäÀ̽º¸¦ ÁöÁ¤ÇÑ´Ù.

NdisInterfaceEisa
È®Àå ISA(EISA) ÀÎÅÍÆäÀ̽º¸¦ ÁöÁ¤ÇÑ´Ù.

NdisInterfaceMca
´õ ÀÌ»ó Áö¿øµÇÁö ¾Ê´Â MCA ¹ö½º¸¦ ¾ð±ÞÇÑ´Ù.

NdisInterfaceTurboChannel
Turbo Channel ÀÎÅÍÆäÀ̽º¸¦ ÁöÁ¤ÇÑ´Ù.

NdisInterfacePci
Peripheral Component Interconnect(PCI) ÀÎÅÍÆäÀ̽º¸¦ ÁöÁ¤ÇÑ´Ù.

NdisInterfacePcMca
Personal Computer Memory Card International Association(PC Card) ÀÎÅÍÆäÀ̽º¸¦ ÁöÁ¤ÇÑ´Ù.

ÀÌ ¸Å°³º¯¼ö´Â ÀÌ ¸Å°³º¯¼ö°¡ NdisMSetAttributesEx·Î 0À¸·Î Àü´ÞÇØ¾ß ÇÏ´Â ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö´Â »ó°üÀÌ ¾ø´Ù.

ÁÖ¼®

MiniportInitialize ÇÔ¼ö´Â NdisMSetAttributesEx¿¡¼­ Á¦°øµÈ Á¤º¸¿¡ ÀÇÁ¸ÇÏ´Â ¾î¶² ´Ù¸¥ NdisMRegisterXxx ȤÀº NdisXxx ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ NdisMSetAttributesEx(ȤÀº NdisMSetAttributes)¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î, NIC µå¶óÀ̹öÀ¸ NdisMAllocateMapRegisters¿¡ ´ëÇÑ È£ÃâÀº ¸¸¾à MiniportInitialize°¡ AttributeFlags¿¡ NDIS_ATTRIBUTE_BUS_MASTER ·Î NdisMSetAttributesEx¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù¸éÀº ½ÇÆÐÇÒ °ÍÀÌ´Ù.

ÀÎÅ͹̵ð¾ù µå¶óÀ̹öµéÀº NdisMSetAttributesº¸´Ù´Â NdisMSetAttributesEx¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ±×¸®°í AttributeFlags¿¡ NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù. ÀÌ Ç÷¡±×¸¦ ¼³Á¤ÇÏ´Â °ÍÀº NDIS°¡ ÀÎÅ͹ÌÀ̾ù µå¶óÀ̹ö¿¡¼­ ¹ß»ýÇÏ´Â µå¹°Áö¸¸Àº ÀϽÃÀûÀ¸·Î ¸ØÃß´Â µ¥µå¶ôµéÀ» ¸·¾ÆÁÖ´Â Ç®-µÎÇ®·º½º ¹Ì´ÏÆ÷Æ®·Î¼­ ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö¸¦ ´Ù·ç°Ô ÇÑ´Ù. °á°úÀûÀ¸·Î, ¸ðµç ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö´Â µ¿½Ã¿¡ º¸³»±âµé°ú ÀεðÄÉÀ̼ǵéÀ» ´Ù·ê ¼ö ÀÖ°Ô ÇØÁØ´Ù.

ºñÁ÷·ÄÈ­µÈ µå¶óÀ̹öµéÀº ¶ÇÇÑ NdisMSetAttributesEx¸¦ È£ÃâÇØ¾ß Çϰí AttributeFlags¸¦ NDIS_ATTRIBUTE_DESERIALIZE·Î ¼³Á¤ÇØ¾ß ÇÑ´Ù. NDIS´Â ºñÁ÷·ÄÈ­µÈ µå¶óÀ̹ö¸¦ À§ÇØ º¸³»±â ÆÐŶ Å¥¸¦ À¯ÁöÇÏÁö ¾Ê´Â´Ù. ȤÀº ±×·¯ÇÑ µå¶óÀ̹öÀÇ MiniportXxx ÇÔ¼öµé¿¡ ´ëÇÑ È£ÃâµéÀ» Á÷·ÄÈ­ÇÏÁö ¾Ê´Â´Ù. ºñÁ÷·ÄÈ­µÈ µå¶óÀ̹ö´Â ±× ÀÚü·Î ´ÙÀ½°ú °°Àº Ã¥ÀÓÀ» Áø´Ù.:

  • ¸ðµç µé¾î¿À´Â º¸³»±â ¿ä±¸µéÀ» ¹Þ¾ÆµéÀδÙ.
  • ¸¸¾à ÇÊ¿äÇÏ´Ù¸éÀº ³»ºÎÀûÀ¸·Î µé¾î¿À´Â º¸³»±â ÆÐŶµéÀ» Å¥¿¡ ÀúÀåÇÑ´Ù. ¿¹¸¦ µé¾î, ¸¸¾à ºñÁ÷·ÄÈ­µÈ NIC µå¶óÀ̹ö´Â ÇöÀç µé¾î¿À´Â º¸³»±â ÆÐŶµéÀÌ Áï½Ã Àü¼ÛÇϴµ¥ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ºÒÃæºÐÇÑ ÀÚ¿øµéÀ» °¡Áú ¶§.
  • µå¶óÀ̹öÀÇ ·çƾµé »çÀÌ¿¡ ÇÊ¿äÇÑ ³»ºÎ Å¥µé¿¡ ´ëÇÑ Á¢±ÙÀ» µ¿±âÈ­ÇÑ´Ù.
  • Miniport(Co)Send(Packets) ÇÔ¼ö¿¡ Àü´ÞµÇ¾îÁö´Â °¢ ÇÁ·ÎÅäÄÝ Á¦°ø ÆÐŶ µð½ºÅ©¸³ÅÍ·Î NdisMSendComplete¸¦ °è¼ÓÇØ¼­ È£ÃâÇÔÀ¸·Î½á ºñµ¿±âÀûÀ¸·Î ¸ðµç ¿ä±¸µÈ º¸³»±âµéÀ» ¿Ï¼º½ÃŲ´Ù.
NDIS´Â ¸ðµç ¿¬°á ÁöÇâ ¹Ì´ÏÆ÷Æ®µéÀº NdisMSetAttributesEx¿¡ Àü´ÞµÈ AttributeFlag¿¡ »ó°ü¾øÀÌ ºñÁ÷·ÄÈ­ µå¶óÀ̹öµéÀÌ´Ù. Áï MajorNdisVersionÀ¸·Î 0x05·Î NdisMRegisterMiniport¸¦ È£ÃâÇÏ´Â ¾î¶² µå¶óÀ̹ö´Â ºñÁ÷·ÄÈ­µÈ ¹Ì´ÏÆ÷Æ®ÀÌ´Ù.

Á÷·ÄÈ­µÈ NIC µå¶óÀ̹öµéÀÌ MiniportInitialize·ÎºÎÅÍ ÀÌ·¯ÇÑ ÇÔ¼öµéÀ» È£ÃâÇÒ ¼ö ÀÖÁö¸¸Àº NdisMSetAttributes´Â NIC µå¶óÀ̹öÀÇ MiniportCheckForHang ±×¸®°í/ȤÀº MiniportReset ÇÔ¼öµéÀÌ È£ÃâµÇÁö´Â ½Ã°£ °£°ÝÀ» Á¶Á¤ÇÏ´Â °ÍÀ» È£ÃâÀÚ°¡ Çã¶ôµÇÁö ¾Ê´Â´Ù.

CheckForHangTimeInSecondsÀÇ °ªÀº NDIS ¶óÀ̺귯¸®ÀÇ ÃÊ´ÜÀ§ ŸÀӾƿô °£°ÝÀ» °áÁ¤ÇÑ´Ù. if any È£ÃâÀÚ¿¡°Ô Å¥·Î ÀúÀåµÇ´Â °ÍÀ» À¯ÁöÇÏ´Â ¿ä±¸µéÀ» °áÁ¤ÇÑ´Ù. µðÆúÆ®·Î, NDIS°¡ Å¥¿¡ ÀúÀåµÈ º¸³»±â(Á÷·ÄÈ­µÈ µå¶óÀ̹ö¸¦ À§Çؼ­ ´ÜÁö)À» ŸÀӾƿôµÇ°í µå¶óÀ̹ö°¡ NdisMSetAttributesEx¸¦ È£ÃâÇÒ ¶§ NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT °ú NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT·Î AttributeFlags·Î ¼³Á¤µÇÁö ¾Ê´Â´Ù¸éÀº MiniportReset ÇÔ¼ö¸¦ È£ÃâÇÑ ÈÄ¿¡ check-for-hang ½Ã°£ °£°ÝÀ» µÎ ¹è·Î ¿ä±¸ÇÑ´Ù. ÀÎÅ͹̵ð¾ù µå¶óÀ̹öµéÀº ±×·¯ÇÑ µå¶óÀ̹ö´Â ¾Æ·§ NIC µå¶óÀ̹ö°¡ º¸³»±â¿Í ¿ä±¸µéÀ» ó¸®ÇÒ ¶§ °áÁ¤ÇÒ ¼ö ¾ø°í ȤÀº Á¦¾îÇÒ ¼ö ¾ø±â ¶§¹®¿¡ NdisMSetAttributesEx¸¦ È£ÃâÇÒ ¶§ ÀÌ·¯ÇÑ Ç÷¡±×µéÀ» ¼³Á¤ÇØ¾ß ÇÑ´Ù.

NIC µå¶óÀ̹öµéÀº ºñ·Ï NDIS°¡ Á÷·ÄÈ­µÈ NIC µå¶óÀ̹ö¿¡ ÀÇÇØ ±×·¯ÇÑ »ç¾çÀ» ÁöŰÁö¸¸Àº NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT°ú NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT Ç÷¡±×µéÀ» ¼³Á¤ÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù. ±×·¯³ª NIC µå¶óÀ̹öµéÀº ±×µéÀÇ MiniportReset ÇÔ¼öµéÀº CheckForHangTimeInSeconds¸¦ ÁöÁ¤ÇÔÀ¸·Î½á È£ÃâµÇ¾îÁö´Â time-out °£°ÝÀ» Á¶Á¤ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ¸ðµ©À» °ÉÃÄ EthernetÀ» ¸ð¹æÇÏ´Â NIC µå¶óÀ̹ö´Â NDIS ¶óÀ̺귯¸®ÀÇ µðÆúÆ® ŸÀӾƿô °£°Ý³»¿¡ ¸ðµç ÆÐŶÀ» ¿Ï¼º½ÃŰÁö ¾ÊÀ» °ÍÀÌ´Ù. ÆÐŶÀÌ ±×·¯ÇÑ NIC¿¡¼­ ŸÀӾƿôÀ¸·Î ³ªÅ¸³¯ ¶§¸¶´Ù, NDIS°¡ NICÀÌ ´õ ÀÌ»ó ¿Ã¹Ù¸£°Ô ¿î¿µµÇÁö ¾Ê°í µå¶óÀ̹öÀÇ MiniportReset ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀ» ÃßÃøÇÒ °ÍÀÌ´Ù. ±×·¯ÇÑ NIC µå¶óÀ̹ö¸¦ À§Çؼ­ CheckForHangTimeInSeconds·Î 2º¸´Ù ´õ Å« ¾î¶² °ªÀ» ¼³Á¤µÈ NdisMSetAttributesEx ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀº ºÒÇÊ¿äÇÑ ¸®¼ÂÀ» ¸·°í MiniportCheckForHang ÇÔ¼ö°¡, if any, NICÀÇ ¿¬»ê »óŸ¦ Å×½ºÆ®Çϱâ À§ÇØ È£ÃâµÇ¾îÁö´Â °£°ÝÀ» È®ÀåÇÑ´Ù.

ÀÎÅ͹̵ð¾ù µå¶óÀ̹ö´Â NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND Ç÷¡±×¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù. ÀÌ Ç÷¡±×¸¦ ¼³Á¤ÇÏ´Â °ÍÀº ½Ã½ºÅÛÀÌ ³·Àº Àü·Â(sleep)»óÅ·ΠÀüÀ̵DZâ Àü¿¡ µå¶óÀ̹ö¸¦ NDIS°¡ ¸ØÃß°Ô ÇÏ´Â °ÍÀ» ¸·´Â´Ù.

ºñ PnP ÀÎ½Ä NICÀ» °ü¸®ÇÏ´Â legacy ¹Ì´ÏÆ÷Æ®´Â ³·Àº Àü·Â »óÅ·Π½Ã½ºÅÛ ÀüÀ̰¡ ÀϾ±â Àü¿¡ NDIS°¡ µå¶óÀ̹ö¸¦ ¸ØÃß°Ô(halting) ÇÏ´Â °ÍÀ» ¸·±â À§ÇØ NDIS_ATTRIBUTE_HALT_ON_SUSPEND Ç÷¡±×·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ ÀÌ Ç÷¡±×¸¦ ¼³Á¤ÇÑ´Ù¸éÀº, NDIS°¡ ºñ·Ï ¹Ì´ÏÆ÷Æ® NICÀ» À§ÇÑ ¹ö½º µå¶óÀ̹ö°¡ NICÀÌ PMÀνÄÀÌ ¾Æ´Ï´Ù¶ó´Â °ÍÀ» ÀνĽÃŰÁö¸¸Àº NDIS´Â ¹Ì´ÏÆ÷Æ®¿¡ OID_PNP_CAPABILITIES·Î Äõ¸®ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®°¡ OID_PNP_CAPABILITIES ¿ä±¸°¡ NDIS_STATUS_SUCCESS·Î ¼º°øµÅ¾ß ÇÑ´Ù. ÀÌ OID·Î ¸®ÅÏµÈ NDIS_PM_WAKE_UP_CAPABILITIES ±¸Á¶Ã¼³»¿¡¼­, ¹Ì´ÏÆ÷Æ®´Â °¢ wake-up ´É·ÂÀ» À§Çؼ­ NdisDeviceStateUnspecifiedÀÇ ÀåÄ¡ Àü¿ø »óŸ¦ ¶ÇÇÑ ÁöÁ¤ÇØ¾ß ÇÑ´Ù. ³·Àº Àü¿ø »óÅ·ÎÀÇ ½Ã½ºÅÛ ÀüÀÌÇÒ ¶§ ¹Ì´ÏÆ÷Æ®´Â ±×°ÍÀÌ À¯ÁöÇÑ ¾î¶² Çϵå¿þ¾î ÄÁÅØ½ºÆ®À» ÀúÀåÇØ¾ß ÇÑ´Ù. D3 »óÅ¿¡¼­ OID_PNP_SET_POWER ¿ä±¸¸¦ ¼ö½ÅÇÏÀÚ¸¶ÀÚ, ¹Ì´ÏÆ÷Æ®´Â NICÀ» ³·Àº Àü¿ø »óŸ¦ À§ÇØ Àû´çÇÑ »óÅ·Π¼³Á¤ÇØ¾ß ÇÑ´Ù. D0 »óÅ·ΠOID_PNP_SET_POWER ¿ä±¸¸¦ ¼ö½ÅÇÏÀÚ¸¶ÀÚ, ¹Ì´ÏÆ÷Æ®´Â NICÀ» ÀÛµ¿ »óÅÂÀ» À§ÇØ Àû´çÇÑ »óÅ·Π¼³Á¤ÇØ¾ß ÇÑ´Ù.

ÀϹÝÀûÀ¸·Î, NIC µå¶óÀ̹ö´Â NDIS´Â ±×·¯ÇÑ È£ÃâÀÌ ÀϾ±â Àü¿¡ AttributeFlags °ªÀ» °¡Á®¾ßÇÏ°í µå¶óÀ̹ö°¡ Ç×»ó ÀÌ·¯ÇÑ È£Ãâ¿¡¼­ Á¤º¸¸¦ ÀúÀåÇϱâ À§ÇØ MiniportAdapterContext¿¡ ¸Þ¸ð¸®¸¦ ÇÊ¿ä·Î Çϱ⠶§¹®¿¡ NICÀ» À§ÇØ ·¹Áö½ºÆ®¸®¿¡ Çϵå¿þ¾î ÀÚ¿øµéÀ» ¿ä±¸ÇÏ´Â ¾î¶² NdisXxx ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ NdisMSetAttributesEx¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ Á¦ÇÑÀº NIC µå¶óÀ̹öÀÇ MiniportInitialize ÇÔ¼ö°¡ NdisMSetAttributesEx¸¦ È£ÃâÇϱâ Àü¿¡ ´ÙÀ½ NdisXxx¸¦ È£ÃâÇÒ ¼ö ¾ø´Ù´Â °ÍÀ» ¾Ï½ÃÇÑ´Ù.

  • NdisMPciAssignResources
  • NdisMAllocateMapRegisters, NdisMAllocateSharedMemory
  • NdisMMapIoSpace, Ndis...RegisterXxx ÇÔ¼öµé
  • NdisMRegisterDmaChannel
  • NdisMRegisterInterrupt
  • NdisMRegisterIoPortRange, NdisRaw..PortXxx ÇÔ¼öµé
±×·¯³ª, NdisMSetAttributesEx¸¦ È£ÃâÇϱâ Àü¿¡, ¾î¶² µå¶óÀ̹öÀÇ MiniportInitialize ÇÔ¼ö´Â ·¹Áö½ºÆ®¸®¿¡ ÀνºÅçµÈ ±¸¼º Á¤º¸¸¦ °Ë»öÇϱâ À§ÇØ Ndis..Configuration ÇÔ¼öµéÀ» È£ÃâÇÒ ¼ö ÀÖ´Ù. NdisMSetAttributesEx¸¦ È£ÃâÇϱâ Àü¿¡, NIC µå¶óÀ̹ö´Â NdisImmediate..PortXxx ÇÔ¼öµé°ú ¸¶Âù°¡Áö·Î, NdisImmediateReadPciSlotInformation ȤÀº NdisImmediateReadSharedMemory¿Í °°Àº NdisImmediateXxx¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. MiniportInitialize´Â ¶ÇÇÑ ¹ö½º ŸÀÔ Æ¯Á¤ NdisReadXxx ÇÔ¼öµéÀ» È£ÃâÇÒ ¼ö ÀÖ´Ù. NdisReadPciSlotInformation °ú °°Àº, µå¶óÀ̹öÀÇ ÀÎÅÍÆäÀ̽º ŸÀÔÀ» À§ÇØ ÀνºÅçµÈ ·¹Áö½ºÆ®¸® ¿£Æ®¸®°¡ MiniportInitialize°¡ È£ÃâÇÏ´Â ¹ö½º ŸÀÔ Æ¯Á¤ NdisReadXxx¿Í ¸ÅÄ¡µÇ´Â ÇÑ.

NdisMSetAttributesEx¿¡°Ô Á¦°øµÈ MiniportAdapterContext ÇÚµéÀÌ NdisMRegisterMiniport ȤÀº NdisIMRegisterLayeredMiniport¿¡ ´ëÇÑ È£Ãâ¿¡¼­ MiniportInitialize¿Í ÇÔ²² µî·ÏµÈ ¸ðµç MiniportXxx ÇÔ¼öµé¿¡ ´ëÇÑ ÀÔ·Â ¸Å°³º¯¼ö°¡ µÉ °ÍÀÌ´Ù. Ç×»ó ÀÌ ÇÚµéÀº µå¶óÀ̹ö°¡ NIC ƯÁ¤ ½ÇÇà »óŸ¦ À¯ÁöÇÏ´Â MiniportInitialize¿¡ ÀÇÇØ ÇÒ´çµÈ »óÁÖ ¸Þ¸ð¸®¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÌ´Ù.

NdisMSetAttributesEx´Â IRQL PASSIVE_LEVEL¿¡¼­ ½ÇÇàÇÑ´Ù.