NdisMRegisterDmaChannel

NDIS_STATUS 

  NdisMRegisterDmaChannel(

    OUT PNDIS_HANDLE  MiniportDmaHandle,

    IN NDIS_HANDLE  MiniportAdapterHandle,

    IN UINT  DmaChannel,

    IN BOOLEAN  Dma32BitAddresses,

    IN PNDIS_DMA_DESCRIPTION  DmaDescription,

    IN ULONG  MaximumLength

    );

NdisMRegisterDmaChannel ÇÔ¼ö´Â ½½·¹À̺ê NIC ȤÀº ISA ¹ö½º¸¶½ºÅÍ NIC¿¡¼­ DMA ¿¬»êÀ» À§Çؼ­ ÃʱâÈ­µ¿¾È¿¡ ½Ã½ºÅÛ DMA ÄÁÆ®·Ñ·¯ ä³ÎÀ» ¿ä±¸ÇÑ´Ù.

¸Å°³º¯¼ö

MiniportDmaHandle
NdisMXxx ½Ã½ºÅÛ DMA ÇÔ¼öÀÇ ¼øÂ÷ÀûÀΠȣÃâ¿¡¼­ ¹Ì´ÏÆ÷Æ®°¡ »ç¿ëÇÑ ÇÚµéÀ» ¸®ÅÏÇÏ´Â ÀÌ ÇÔ¼öÀÇ È£ÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù.

MiniportAdapterHandle
MiniportInitialize ÇÔ¼ö·Î ÀԷµǴ ÇÚµéÀ» ¼­¼úÇÑ´Ù.

DmaChannel
¹«½ÃµÈ´Ù. ÀÖ´Ù¸é DmaDescription¿¡ DMA ä³ÎÀ» ¼³Á¤Çضó.

Dma32BitAddresses
NICÀÌ 32 ÁÖ¼Ò ¶óÀÎÀ̶ó¸é TRUE¸¦ ¼­¼úÇÑ´Ù.

DmaDescription
È£ÃâÀÚ¿¡ ÀÇÇØ¼­ ä¿öÁø NDIS_DMA_DESCRIPTION ±¸Á¶Ã¼¸¦ °¡¸®Å²´Ù. ÀÌ ±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵȴÙ:

typedef struct _NDIS_DMA_DESCRIPTION {

    BOOLEAN DemandMode;

    BOOLEAN AutoInitialize;

    BOOLEAN DmaChannelSpecified;

    DMA_WIDTH DmaWidth;

    DMA_SPEED DmaSpeed;

    ULONG DmaPort;

    ULONG DmaChannel;

} NDIS_DMA_DESCRIPTION, *PNDIS_DMA_DESCRIPTION;

µå¶óÀ̹ö´Â ´ÙÀ½ÀÇ ¸â¹ö¸¦ ä¿ì±â Àü¿¡ 0À¸·Î ÀÌ ±¸Á¶Ã¼¸¦ ÃʱâÈ­ÇØ¾ßÇÑ´Ù:

DemandMode
½½·¹À̺ê NICÀÌ ½Ã½ºÅÛ DMA ÄÁÆ®·Ñ·¯ÀÇ ¿ä±¸ ¸ðµå¸¦ »ç¿ëÇÑ´Ù¸é TRUE¸¦ ¼­¼úÇÑ´Ù.

AutoInitialize
½½·¹À̺ê NICÀÌ ½Ã½ºÅÛ DMA ÄÁÆ®·Ñ·¯ÀÇ ÀÚµ¿ÃʱâÈ­ ¸ðµå¸¦ »ç¿ëÇÑ´Ù¸é TRUE¸¦ ¼­¼úÇÑ´Ù.

DmaChannelSpecified
DmaChannelÀÌ NIC¿¡ ÀÇÇØ¼­ »ç¿ëµÈ ½Ã½ºÅÛ DMA ÄÁÆ®·Ñ·¯ ä³ÎÀÇ ¹ö½º °ü·Ã °ªÀ¸·Î ¼³Á¤µÆ´Ù¸é TRUE¸¦ ¼­¼úÇÑ´Ù.

DmaWidth
DMA ¿¬»ê¿¡ ´ëÇÑ Àü¼Û ³ÐÀ̸¦ ¼­¼úÇÑ´Ù. Width8Bits, Width16Bits, ȤÀº Width32Bits Áß¿¡ ÇϳªÀÌ´Ù.

DmaSpeed
Compatible, TypeA, TypeB, ȤÀº TypeC Áß¿¡ Çϳª¸¦ ¼­¼úÇÑ´Ù.

DmaPort
´õÀÌ»ó Áö¿øµÇÁö ¾Ê´Â MCA ¹ö½º¸¦ ¾ð±ÞÇÑ´Ù. ÀÌ ¸â¹ö´Â 0À̾î¾ßÇÑ´Ù.

DmaChannel
NIC¿¡ ÀÇÇØ¼­ »ç¿ëµÈ ½Ã½ºÅÛ DMA ÄÁÆ®·Ñ·¯ ä³ÎÀÇ ¹ö½º °ü·Ã ¼ö¸¦ ¼­¼úÇÑ´Ù.

MaximumLength
NICÀÌ ÇϳªÀÇ DMA ¿¬»ê¿¡¼­ Àü¼ÛÇÒ ¼ö ÀÖ´Â ÃÖ´ëÀÇ ¹ÙÀÌÆ® ¼ö¸¦ ¼­¼úÇÑ´Ù. NICÀÌ ¹«Á¦ÇÑÀÇ Àü¼Û ´É·ÂÀ» °¡Áø´Ù¸é ÀÌ ¸Å°³º¯¼ö¸¦ -1·Î ¼³Á¤Çضó.

¸®Åϰª

NdisMRegisterDmaChannel ÇÔ¼ö´Â ´ÙÀ½ »óŰª Áß¿¡ Çϳª¸¦ ¸®ÅÏÇÑ´Ù:

NDIS_STATUS_SUCCESS
NDIS´Â È£ÃâÀÚÀÇ NICÀ» À§Çؼ­ ·¹Áö½ºÆ®¸®¿¡¼­ ¸í½ÃµÈ DMA ä³ÎÀ» ¿ä±¸ÇÏ°í ¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇÑ ¼øÂ÷ÀûÀÎ DMA ¿¬»êÀ» À§Çؼ­ ÇÊ¿äÇÑ ÀÚ¿øÀ» ¼³Á¤ÇÑ´Ù.

NDIS_STATUS_RESOURCE_CONFLICT
´Ù¸¥ µå¶óÀ̹ö°¡ ÀåÄ¡¿¡ ´ëÇØ¼­ ±× ä³ÎÀ» ÀÌ¹Ì ¿ä±¸Ç߱⠶§¹®¿¡ ·¹Áö½ºÆ®¸®¿¡¼­ DMA ä³ÎÀ» ¿ä±¸ÇÏ´Â ½Ãµµ°¡ ½ÇÆÐÇß´Ù. À̰ÍÀÌ ¹ß»ýÇÑ´Ù¸é NdisMRegisterDmaChannel ÇÔ¼ö´Â ¿¡·¯¸¦ ÀúÀåÇÑ´Ù.

NDIS_STATUS_RESOURCES
NDIS´Â ÀÌ NIC µå¶óÀ̹ö¿¡ ÀÇÇÑ DMA ¿¬»êÀ» Áö¿øÇÒ Çʿ䰡 ÀÖ´Â ½Ã½ºÅÛ ÀÚ¿øÀ» ÇÒ´çÇÏÁö ¾Ê¾Ò´Ù.

NDIS_STATUS_FAILURE
¹ö½º ŸÀÔ È¤Àº ¹ö½º ³Ñ¹ö°¡ ¹üÀ§ ¹ÛÀ̰ųª µå¶óÀ̹ö°¡ ISA°¡ ¾Æ´Ñ ´Ù¸¥ I/O ¹ö½º »ó¿¡¼­ NICÀ» ¹ö½º¸¶½ºÅÍ·Î ¼±¾ðÇß´Ù.

ÁÖ¼®

½½·¹À̺ê DMA NICÀÇ µå¶óÀ̹ö´Â ¼øÂ÷ÀûÀÎ DMA ¿¬»ê¿¡ ´ëÇÑ ½Ã½ºÅÛ ÀÚ¿øÀ» ¿¹¾àÇϱâ À§Çؼ­ MiniportInitialize ÇÔ¼ö·ÎºÎÅÍ NdisMRegisterDmaChannel ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù.

¶ÇÇÑ ISA ¹ö½º¸¶½ºÅÍ NICÀÇ µå¶óÀ̹ö´Â ·¹Áö½ºÆ®¸®¿¡¼­ NIC¿¡ ´ëÇÑ ½Ã½ºÅÛ DMA ÄÁÆ®·Ñ·¯¸¦ ¿ä±¸Çϱâ À§Çؼ­ MiniportInitialize ÇÔ¼ö·ÎºÎÅÍ NdisMRegisterDmaChannel ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù.

MiniportInitialize ÇÔ¼ö´Â NdisMRegisterDmaChannel ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ NdisMSetAttributes³ª NdisMSetAttributesEx ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù.

MiniportInitialize ÇÔ¼ö´Â ·¹Áö½ºÆ®¸®³ª ¹ö½º ŸÀÔ Æ¯Á¤ NdisXxx ±¸¼ºÇÔ¼ö¸¦ È£ÃâÇϹǷνá NdisMRegisterDmaChannel ÇÔ¼ö·Î Àü´ÞµÇ´Â ¹ö½º °ü·Ã °ªÀ» ¾ò´Â´Ù.

±×·¯ÇÑ µå¶óÀ̹ö°¡ ÀåÄ¡°¡ ÇÊ¿ä·ÎÇÏ´Â ½Ã½ºÅÛ DMA ÀÚ¿øÀ» ÇÒ´çÇÒ ¼ö ¾ø´Ù¸é MiniportInitialize ÇÔ¼ö´Â NICÀ» À§Çؼ­ ÀÌ¹Ì ÇÒ´çÇÑ ¸ðµç ÀÚ¿øÀ» ÇØÁ¦ÇؾßÇÑ´Ù. ±×·¯¸é ±× NIC¿¡ ´ëÇÑ ÃʱâÈ­´Â ½ÇÆÐÇÑ´Ù.

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