NdisAllocateMemoryWithTag
NDIS_STATUS
NdisAllocateMemoryWithTag(
OUT PVOID *VirtualAddress,
IN UINT Length,
IN ULONG Tag
);
|
NdisAllocateMemoryWithTag ÇÔ¼ö´Â »óÁÖ(ºñÆäÀÌÁöȵÈ) ½Ã½ºÅÛ °ø°£ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù.
¸Å°³º¯¼ö
- VirtualAddress
- ÀÌ ÇÔ¼ö°¡ ÇÒ´çµÈ ¸Þ¸ð¸®ÀÇ º£À̽º °¡»ó ÁÖ¼Ò¸¦ ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù. ȤÀº ¸¸¾à ÃæºÐÇÑ ºñÆäÀÌÁöÈµÈ ¸Þ¸ð¸®°¡ ÇöÀç ÀÌ¿ëÇÒ ¼ö ¾ø´Ù¸éÀº NULLÀÌ´Ù.
- Length
- ÇÒ´çµÈ ¹ÙÀÌÆ®·Î Å©±â¸¦ ÁöÁ¤ÇÑ´Ù.
- Tag
- ÀÛÀº µû¿ÈÇ¥(quote marks)¿¡ ÀÇÇØ ºÐ¸®µÇ°í, 4°³ÀÇ ¹®ÀÚµé±îÁö, Ç×»ó ¿ª¼øÀ¸·Î ÁöÁ¤µÇ¾îÁö´Â ¹®ÀÚ¿ÀÌ´Ù. ÀÌ·¯ÇÑ È£ÃâÀ» À§ÇÑ NDIS Á¦°ø µðÆúÆ® ű״ 'maDN'ÀÌÁö¸¸Àº È£ÃâÀÚ´Â ¿Ü¿¬ÀûÀÎ(´Ù¸¥) °ªÀ» Á¦°øÇÔÀ¸·Î½á ÀÌ·¯ÇÑ µðÆúÆ®¸¦ ¿À¹ö¶óÀ̵åÇÒ ¼ö ÀÖ´Ù.
¸®Åϰª
NdisAllocateMemoryWithTag ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº °ªÀ» ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.
- NDIS_STATUS_SUCCESS
- È£ÃâÀÚ´Â VirtualAddress·Î ¸®ÅϵǴ °ªÀ¸·Î ½ÃÀÛÇÏ´Â ÇÒ´çµÈ ¸Þ¸ð¸® ¹üÀ§¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- NDIS_STATUS_FAILURE
- ¿ä±¸µÈ ¸Þ¸ð¸®¸¦ ÇÒ´çÇϱâ À§ÇÑ ½Ãµµ°¡ ½ÇÆÐÀÌ´Ù. ÀÌ·¯ÇÑ ¸®ÅÏÀº ¹Ýµå½Ã ¿¬¼ÓµÈ È£ÃâÀÌ ½ÇÆÐÇÒ °ÍÀÌ´Ù¶ó´Â °ÍÀ» ÀǹÌÇÏÁö´Â ¾Ê´Â´Ù.
ÁÖ¼®
NdisAllocateMemoryWithTag ¿¡ ´ëÇÑ È£ÃâÀº NdisAllocateMemoryWithTag°¡ °è¼ÓÀûÀ¸·Î ³ªÅ¸³ª´Â ½Ã½ºÅÛÀÇ ¾î¶² Ŭ·¡½¬ ´ýÇÁ¿¡¼ ³ªÅ¸³ª´Â ű׸¦ È£ÃâÀÚ¿¡°Ô Á¦°øÇÏ´Â °ÍÀ» Çã¶ôÇÏ´Â °ÍÀ» Á¦¿ÜÇϰí´Â NdisAllocateMemory¸¦ È£ÃâÇÏ´Â °Í°ú µ¿µîÇÏ´Ù.
½Ã½ºÅÛÀÇ checked ºôµå·Î µå¶óÀ̹ö °³¹ßÇÏ´Â µ¿¾È, ÀÌ·¯ÇÑ ÇÔ¼ö´Â ¶ÇÇÑ Å©·¡½¬ µð¹ö±ëÀ» À§ÇØ À¯¿ëÇÒ ¼ö ÀÖ´Ù. NdisAllocateMemoryº¸´Ù ¿ÀÈ÷·Á ÀÌ·¯ÇÑ ·çƾÀ» È£ÃâÇÏ´Â °ÍÀº È£ÃâÀÚ Á¦°ø ű״ pool memoryÀÇ Å¬·¡½¬ ´ýÇÁ·Î »ðÀÔÇÑ´Ù.
ÀÌ ÇÔ¼ö¿¡ Àü´ÞµÇ´Â ű״ ¸¸¾à NdisAllocateMemoryWithTag°¡ È£ÃâµÇ¾îÁú ¶§ ¹®ÀÚµéÀ» ¿ª¼øÀ¸·Î ÇÑ´Ù¸éÀº, ´õ Àбâ ÁÁÀ» °ÍÀÌ´Ù. ¿¹¸¦ µé¾î, È£ÃâÀÚ°¡ ű׷μ 'Fred'¸¦ Àü´ÞÇÑ´Ù¸éÀº, ¸¸¾à poolÀÌ ´ýÇÁµÇ°Å³ª ȤÀº µð¹ö°Å¿¡¼ pool »ç¿ëÀ» Æ®·¢Å·ÇÒ ¶§(ÃßÀûÇÒ ¶§) 'derF'·Î¼ ³ªÅ¸³¯ °ÍÀÌ´Ù. NDIS Á¦°ø µðÆúÆ® ű״ poolÀÌ ´ýÇÁµÉ ¶§ 'NDam' (NDIS allocate memory¸¦ °¡¸®Å°´Â)·Î¼ ³ªÅ¸³´Ù.
NdisAllocateMemoryWithTagÀÇ È£ÃâÀÚµéÀº IRQL <= DISPATCH_LEVEL¿¡¼ ½ÇÇàµÉ °ÍÀÌ´Ù.
|