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¿¡¼­ ½ÇÇàµÉ °ÍÀÌ´Ù.