NdisMGetDeviceProperty

VOID 

  NdisMGetDeviceProperty(

    IN NDIS_HANDLE  MiniportAdapterHandle,

    IN OUT PDEVICE_OBJECT  *PhysicalDeviceObject  OPTIONAL,

    IN OUT PDEVICE_OBJECT  *FunctionalDeviceObject  OPTIONAL,

    IN OUT PDEVICE_OBJECT  *NextDeviceObject  OPTIONAL,

    IN OUT PCM_RESOURCE_LIST  *AllocatedResources  OPTIONAL,

    IN OUT PCM_RESOURCE_LIST  *AllocatedResourcesTranslated  OPTIONAL

    );

NdisMGetDeviceProperty ÇÔ¼ö´Â ¹ö½º µå¶óÀ̹ö¸¦ ÅëÇØ ¹Ì´ÏÆ÷Æ®¿Í Åë½ÅÀ» ¼³Á¤Çϴµ¥ ÇÊ¿äÇÑ µð¹ÙÀ̽º °´Ã¼µéÀ» °Ë»öÇÑ´Ù.

¸Å°³º¯¼ö

MiniportAdapterHandle
¹Ì´ÏÆ÷Æ®ÀÇ NICÀ» ÁöÁ¤ÇÏ´Â NDIS ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ ÇÚµéÀº ¿ø·¡ MiniportInitialize¿¡ Àü´ÞµÇ¾îÁø´Ù.

PhysicalDeviceObject
È£ÃâÀÚ ÇÒ´ç ¹öÆÛÀÇ Æ÷ÀÎÅÍ. ¹öÆÛ´Â ¹Ì´ÏÆ÷Æ®¸¦ À§Çؼ­ ½ÇÁ¦ ÀåÄ¡¸¦ Ç¥½ÃÇÏ´Â DEVICE_OBJECT ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ¼ö½ÅÇÑ´Ù. ÀÌ Æ÷ÀÎÅÍ´Â ¼±ÅÃÀûÀÌ´Ù. ÀÌ ±¸Á¶Ã¼¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ °ÍÀº Kernel-Mode Driver ReferenceÀ» ºÁ¶ó.

FunctionalDeviceObject
È£ÃâÀÚ ÇÒ´ç ¹öÆÛÀÇ Æ÷ÀÌÅÍÀÌ´Ù. ¹öÆÛ´Â DEVICE_OBJECT ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¼ö½ÅÇÑ´Ù. DEVICE_OBJECT´Â NDIS°¡ ½ÇÁ¦ ÀåÄ¡¸¦ À§ÇØ ¸¸µç ±â´ÉÀûÀÎ °´Ã¼¸¦ ³ªÅ¸³½´Ù. ÀÌ Æ÷ÀÎÅÍ´Â ¼±ÅÃÀûÀÌ´Ù.

NextDeviceObject
È£ÃâÀÚ ÇÒ´ç ¹öÆÛÀÇ Æ÷ÀÎÅ͸¦ ³ªÅ¸³½´Ù. ¹öÆÛ´Â ´ÙÀ½ ÀåÄ¡ °´Ã¼¸¦ Ç¥½ÃÇÏ´Â DEVICE_OBJECT ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¼ö½ÅÇÑ´Ù. ÀÌ ´ÙÀ½ µð¹ÙÀ̽º °´Ã¼´Â ¹Ì´ÏÆ÷Æ®¿¡ ¼ÓÇÑ ±â´ÉÀûÀÎ ÀåÄ¡ °´Ã¼¿¡ ÀÇÇØ üÀγ»¿¡¼­ ¼±ÇàµÇ¾îÁø´Ù. NDIS´Â ½ÇÁ¦ ÀåÄ¡¸¦ À§ÇÑ ÀÌ·¯ÇÑ ±â´ÉÀûÀÎ ÀåÄ¡ °´Ã¼¸¦ ¸¸µç´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÀåÄ¡ °´Ã¼´Â ¹ö½º µå¶óÀ̹ö ȤÀº HAL°ú °ü·ÃµÈ °´Ã¼°¡ µÉ ¼ö ÀÖ´Ù. ÀÌ Æ÷ÀÎÅÍ´Â ¼±ÅÃÀûÀÌ´Ù.

AllocatedResources
CM_RESOURCE_LIST ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¼ö½ÅÇϴ ȣÃâÀÚ ÇÒ´ç ¹öÆÛ¿¡ ´ëÇÑ Æ÷ÀÎÅÍ. CM_RESOURCE_LIST´Â PnP °ü¸®ÀÚ°¡ ½ÇÁ¦ Àåü¿¡ ÇÒ´çÇÑ Çϵå¿þ¾î ÀÚ¿øµéÀÇ ¸®½ºÆ®À» ¼³¸íÇÑ´Ù. ÀÌ ¸®½ºÆ®´Â Áï HAL¿¡ ÀÇÇØ ¹ø¿ªÀÌ ¾ÈµÈ ±× »óÅ ±×´ë·ÎÀÇ ÀÚ¿øµéÀ» Æ÷ÇÔÇÑ´Ù. ÀÌ Æ÷ÀÎÅÍ´Â ¼±ÅÃÀûÀÌ´Ù. ÀÌ ±¸Á¶Ã¼¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº Kernel-Mode Driver Reference¸¦ ºÁ¶ó.

AllocatedResourcesTranslated
CM_RESOURCE_LIST ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¼ö½ÅÇϴ ȣÃâÀÚ ÇÒ´ç ¹öÆÛ¿¡ ´ëÇÑ Æ÷ÀÎÅÍ. M_RESOURCE_LIST´Â PnP °ü¸®ÀÚ°¡ ½ÇÁ¦ Àåü¿¡ ÇÒ´çÇÑ Çϵå¿þ¾î ÀÚ¿øµéÀÇ ¸®½ºÆ®À» ¼³¸íÇÑ´Ù. ÀÌ ÀåÄ¡´Â HAL¿¡ ÀÇÇØ ¹ø¿ªµÈ ¹ø¿ªµÈ ÇüÅ·ΠÀÚ¿øµéÀ» Æ÷ÇÔÇÑ´Ù. ÀÌ Æ÷ÀÎÅÍ´Â ¼±ÅÃÀûÀÌ´Ù.

ÁÖ¼®

¹Ì´ÏÆ÷Æ® µå¶óÀ̹öµéÀº ±×µéÀÇ Åë½ÅµéÀ» ¼³Á¤Çϱâ À§ÇÑ Æ¯Á¤ Á¤º¸¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù. ¹ö½º µå¶óÀ̹öµéÀ» ÅëÇØ Åë½ÅÇÏ´Â ¹Ì´ÏÆ÷Æ® ÀνºÅϽºµéÀ» À§ÇÑ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öµéÀº ÀÌ·¯ÇÑ Á¤º¸¸¦ ¾ò±â À§ÇØ NdisMGetDeviceProperty¸¦ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î, USB ȤÀº IEEE 1394¿¡ ¿¬°áµÈ ¹Ì´ÏÆ÷Æ® ÀνºÅϽºµéÀº À­ÂÊ °èÃþ¿¡ Ç¥ÁØ NDIS ¹Ì´ÏÆ÷Æ® ÀÎÅÍÆäÀ̽º¸¦ ³ëÃâÇÏ°í ¾Æ·§ °èÃþ¿¡ ƯÁ¤ ¹ö½º¸¦ À§ÇÑ Å¬·¡½º ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öµéÀ» ¿ä±¸ÇÑ´Ù. USB³ª ȤÀº 1394 Ŭ·¡½º ÀÎÅÍÆäÀ̽º »ç¿ëÀ» À§ÇØ, ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â I/O ¿ä±¸ ÆÐŶµé(IRP)À» ¸¸µé°í Á¦ÃâÇÑ´Ù. ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â NdisMGetDeviceProperty°¡ ƯÁ¤ ¹ö½º¸¦ À§ÇØ Å¬·¡½º ÀÎÅÍÆäÀ̽º¿¡ IRPµéÀ» Á¦ÃâÇϱâ À§ÇØ °Ë»öÇÑ ½ÇÁ¦ ±×¸®°í ´ÙÀ½ µð¹ÙÀ̽º °´Ã¼µéÀ» »ç¿ëÇÑ´Ù. ¹ö½º µå¶óÀ̹öµéÀ» À§ÇØ IRPµéÀ» ¸¸µé°í Á¦ÃâÇÏ´Â °Í¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸°¡ À§Ä¡ÇÑ °÷Àº Kernel-Mode µå¶óÀ̹ö µðÀÚÀÎ °¡À̵带 ºÁ¶ó.

NdisMGetDeviceProperty·Î °Ë»öÇÑ ½ÇÁ¦, ±â´É, ´ÙÀ½ ÀåÄ¡ °´Ã¼µéÀ» À§ÇØ DEVICE_OBJECT¿¡ ´ëÇÑ Æ÷ÀÎÅ͵éÀº ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿¡°Ô ¼±¸íÇÏÁö ¾ÊÀº ´Ü¼øÇÑ ÇÚµéµéÀÌ´Ù.

ÀüÇüÀûÀ¸·Î, ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öµéÀº NdisMQueryAdapterResources ÇÔ¼öÀ» È£ÃâÇØ¼­ ±×µéÀÇ NICµéÀ» À§ÇØ Çϵå¿þ¾î ÀÚ¿ø ¸®½ºÆ®¸¦ ¾ò±â À§ÇØ NDIS_RESOURCE_LIST ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ Àü´ÞÇÑ´Ù. NDIS_RESOURCE_LIST ±¸Á¶Ã¼´Â Windows 2000 Ç÷§Æû¿¡¼­ CM_PARTIAL_RESOURCE_LIST ±¸Á¶Ã¼¿Í µ¿µîÇÏ´Ù. ÀÌ ±¸Á¶Ã¼¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â Kernel-Mode Driver Reference¸¦ ºÁ¶ó. ´ëüÀûÀ¸·Î ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öµéÀº "raw" ȤÀº "translated" ÀÚ¿øµé¿¡ ´ëÇÑ Æ÷ÀÎÅ͵éÀ» °Ë»öÇϱâ À§ÇØ NdisMGetDeviceProperty¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. Raw ÀÚ¿øµéÀº HAL¿¡ ÀÇÇØ ¹ø¿ªÀÌ ¾ÈµÇ¾ú´Ù. Translated ÀÚ¿øµéÀº HAL¿¡ ÀÇÇØ ¹ø¿ªµÇ¾ú´Ù. raw¿Í translated ÀÚ¿øµéÀÇ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Plug and Play¸¦ ºÁ¶ó.

¸¸¾à Windows 95/98 ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â raw ȤÀº translated ÀÚ¿øµé¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¿ä±¸ÇÑ´Ù¸éÀº NDIS´Â AllocatedResources ¿Í AllocatedResourcesTranslated ¸Å°³º¯¼ö¿¡ NULL·Î ¼³Á¤ÇÏ´Â °ÍÀ» ÁÖ¸ñÇ϶ó.

NdisMGetDevicePropertyÀÇ È£ÃâÀÚ´Â IRQL PASSIVE_LEVEL¿¡¼­ ½ÇÇàÇÑ´Ù.