NdisMSetupDmaTransfer
VOID
NdisMSetupDmaTransfer(
OUT PNDIS_STATUS Status,
IN NDIS_HANDLE MiniportDmaHandle,
IN PNDIS_BUFFER Buffer,
IN ULONG Offset,
IN ULONG Length,
IN BOOLEAN WriteToDevice
);
|
NdisMSetupDmaTransfer ÇÔ¼ö´Â DMA Àü¼ÛÀ» À§Çؼ È£½ºÆ® DMA ÄÁÆ®·Ñ·¯¸¦ ¼³Á¤ÇÑ´Ù.
¸Å°³º¯¼ö
- Status
- ´ÙÀ½ Áß Çϳª°¡ µÉ ¼ö ÀÖ´Â ¸®Äù½ºÆ®ÀÇ »óŸ¦ ¸®ÅÏÇÏ´Â ÀÌ ÇÔ¼öÀÇ È£ÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù:
- NDIS_STATUS_SUCCESS
- DMA ÄÁÆ®·Ñ·¯°¡ µ¥ÀÌŸ ¹«°á¼ºÀ» À¯ÁöÇϱâ À§Çؼ ÀåÄ¡·ÎºÎÅÍ ÃʱâÈÇÑ ¸í½ÃµÈ µ¥ÀÌŸ¸¦ Àü¼ÛÇϱâ À§Çؼ ¼³Á¤µÆ´Ù.
- NDIS_STATUS_RESOURCES
- Àü¼ÛÀ» À§Çؼ DMA ÄÁÆ®·Ñ·¯¸¦ ¼³Á¤ÇÏ´Â ½Ãµµ°¡ ½ÇÆÐÇß´Ù. ¿Ö³ÄÇϸé MiniportDmaHandle¿¡ ÀÇÇØ¼ Áö½ÃµÇ´Â ä³ÎÀÌ ÇöÀç µ¥ÀÌŸ Àü¼Û¿¡ »ç¿ëÁßÀ̰ųª ÁÖ¾îÁø Length°¡ À¯È¿ÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù.
- MiniportDmaHandle
- ÃʱâÈ µ¿¾È¿¡ NdisMRegisterDmaChannel ÇÔ¼ö¿¡ ÀÇÇØ¼ ¸®ÅÏµÈ ÇÚµéÀ» ¼¼úÇÑ´Ù.
- Buffer
- µ¥ÀÌŸ°¡ Àü¼ÛµÉ È£½ºÆ® ¸Þ¸ð¸®ÀÇ ¹üÀ§¸¦ ¸ÅÇÎÇÏ´Â ¹öÆÛ µð½ºÅ©¸³Å͸¦ °¡¸®Å²´Ù.
- Offset
- Àü¼ÛÀÌ ½ÃÀÛµÉ ¶§ ¸ÊµÈ ¹öÆÛ¾ÈÀÇ ¹ÙÀÌÆ® ¿É¼ÂÀ» ¼¼úÇÑ´Ù. 0Àº Àü¼ÛÀÌ Buffer¿¡ ¸í½ÃµÈ ¹üÀ§ÀÇ Ã³À½ ¹ÙÀÌÆ®¿¡¼ ½ÃÀÛÇØ¾ßÇÔÀ» ¾Ë¸°´Ù.
- Length
- Àü¼ÛµÇ´Â µ¥ÀÌŸÀÇ ¹ÙÀÌÆ® ¼ö¸¦ ¼¼úÇÑ´Ù. Offset°ú Length¿¡ ÀÇÇØ¼ ¸í½ÃµÈ ¹üÀ§´Â Buffer¿¡ ¸í½ÃµÈ ÀûÀýÇÑ ¼ºê ¹üÀ§À̾î¾ßÇÑ´Ù.
- WriteToDevice
NICÀ» ÅëÇØ¼ ½Ã½ºÅÛÀ¸·ÎºÎÅÍ ¾Æ¿ô¹Ù¿îµå Àü¼ÛÀ» À§Çؼ TRUE¸¦ ¼¼úÇÑ´Ù.
ÁÖ¼®
½½·¹À̺ê DMA NICÀÇ µå¶óÀ̹ö´Â WriteToDevice°¡ TRUE·Î ¼³Á¤µÈ °Í¿¡ ´ëÇØ¼ º¸³»±â ¸®Äù½ºÆ®¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î NdisMSetupDmaTransfer ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ±×µéÀÌ NICÀ¸·ÎºÎÅÍ È£½ºÆ® ¸Þ¸ð¸®·Î ¸®½ÃºêµÈ µ¥ÀÌŸ¸¦ Àü¼ÛÇÒ ¶§ WriteToDevice¸¦ FALSE·Î ¼³Á¤ÇÑ´Ù.
NdisMSetupDmaTransfer ÇÔ¼öÀÇ È£ÃâÀÚ´Â Àü¼Û Ÿ°ÙÀÌ µÇ°í È£½ºÆ®¿¡¼ NICÀ¸·ÎÀÇ ´Ù¿î·Îµå ¿¬»ê¿¡ ´ëÇÑ µ¥ÀÌŸ¸¦ Æ÷ÇÔÇϴ ȣ½ºÆ® ¸Þ¸ð¸® ¹üÀ§¿¡ ¸ÅÇÎµÈ ¹öÆÛ µð½ºÅ©¸³Å͸¦ Á¦°øÇÑ´Ù. NICÀÇ DMA ¾ïÁ¦¸¦ ¸¸Á·½ÃŰ´Â »çÀÌÁî·Î Àü¼ÛÀ» ¼¼úÇϱâ À§Çؼ È£ÃâÀÚ´Â ÇÊ¿äÇÏ´Ù¸é Offset°ú Length ¸Å°³º¯¼ö¸¦ °¡Áö°í Àü¼ÛµÇµµ·Ï ¼ºê ¹üÀ§¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
È£ÃâÀÚ´Â WriteToDevice°¡ FALSEÀÏ ¶§ NICÀ¸·ÎºÎÅÍ Àü¼ÛµÉ ¸®½Ãºê µ¥ÀÌŸÀÇ È£½ºÆ® ¹üÀ§¸¦ ¼¼úÇÏ´Â ¹öÆÛ µð½ºÅ©¸³Å͸¦ Á¦°øÇؾßÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é BufferÀÇ ¹öÆÛ µð½ºÅ©¸³ÅÍ´Â NIC µå¶óÀ̹öÀÇ MiniportSend³ª MiniportSendPackets ÇÔ¼ö·Î ÀԷµǴ ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ üÀÎȵȴÙ.
±æÀ̰¡ 256K º¸´Ù ÀÛÀº º¸³»±â ¸®Äù½ºÆ®Ã³·³ ÀÛÀº Àü¼Û ¸®Äù½ºÆ®¿¡ ´ëÇÑ ÆÛÆ÷¸Õ½º¸¦ Çâ»ó½Ã۱â À§Çؼ ¹Ì´ÏÆ÷Æ®´Â ³»ºÎÀÇ ´Ü°èÀûÀÎ ¹öÆÛ ¾ÈÀ¸·Î ÆÐŶ µ¥ÀÌŸ¸¦ º¹»çÇÒ ¼ö ÀÖ°í ±× ¹öÆÛ¸¦ ¸ÅÇÎÇÏ´Â µå¶óÀ̹ö ÇÒ´ç ¹öÆÛ µð½ºÅ©¸³Å͸¦ NdisMSetupDmaTransfer ÇÔ¼ö·Î Àü´ÞÇÑ´Ù.
NdisMSetupDmaTransfer ÇÔ¼ö·ÎºÎÅÍÀÇ ¸®ÅÏ¿¡¼ È£½ºÆ® DMA ÄÁÆ®·Ñ·¯´Â Àü¼ÛÀ» À§Çؼ ÇÁ·Î±×·¥µÇ¾ú´Ù. ±×¸®°í³ª¼ ¹Ì´ÏÆ÷Æ®´Â Àü¼Û ¿¬»êÀ» À§Çؼ NICÀ» ÇÁ·Î±×·¥ÇÑ´Ù.
Àü¼ÛÀÌ ¿Ï·áµÆÀ» ¶§ ¹Ì´ÏÆ÷Æ®´Â NdisMCompleteDmaTransfer ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù.
NdisMSetupDmaTransfer ÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼ ½ÇÇàÇÑ´Ù.
|