TdiRegisterDeviceObject
NTSTATUS
TdiRegisterDeviceObject(
IN PUNICODE_STRING DeviceName,
OUT HANDLE *DevRegistrationHandle
);
TdiRegisterDeviceObject ÇÔ¼ö´Â Æ®·£½ºÆ÷Æ®°¡ ƯÁ¤ Æ®·£½ºÆ÷Æ®¿Í NIC°úÀÇ ¹ÙÀεù »ó¿¡¼ Ŭ¶óÀ̾ðÆ®ÀÇ ³×Æ®¿÷ I/O ¸®Äù½ºÆ®ÀÇ Å¸°ÙÀ» ±¸ÇöÇÏ´Â »õ·Î¿î ÀåÄ¡ °´Ã¼¸¦ »ý¼ºÇßÀ½À» Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ®¿¡°Ô ¾Ë¸°´Ù.
¸Å°³º¯¼ö
- DeviceName
- Æ®·£½ºÆ÷Æ® »ý¼º ÀåÄ¡ °´Ã¼¸¦ È®ÀÎÇÏ´Â À¯´ÏÄÚµå ¹®ÀÚ¿À» Æ÷ÇÔÇϴ ȣÃâÀÚ ÇÒ´ç ¹öÆÛ¸¦ °¡¸®Å²´Ù.
- DevRegistrationHandle
- ÀÌ È£ÃâÀÌ ¼º°øÇÑ´Ù¸é ºÒÅõ¸íÇÑ ÇÚµéÀ» ¸®ÅÏÇÏ´Â TdiRegisterDeviceObject ÇÔ¼öÀÇ È£ÃâÀÚ Á¦°ø ·ÎÄÉÀ̼ÇÀÇ º¯¼ö¸¦ ¼¼úÇÑ´Ù.
¸®Åϰª
TdiRegisterDeviceObject ÇÔ¼ö´Â ¸ðµç Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ® µî·ÏÀ» ¾Ë ¶§ STATUS_SUCCESS¸¦ ¸®ÅÏÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é STATUS_INSUFFICIENT_RESOURCES¸¦ ¸®ÅÏÇÑ´Ù. (½Ã½ºÅÛ ÀÚ¿øÀÇ »ç¿ëÀÌ µ¿ÀûÀ̱⠶§¹®¿¡ °°Àº Æ®·£½ºÆ÷Æ®·ÎÀÇ ¼øÂ÷ÀûÀΠȣÃâÀº ¼º°øÇÒ ¼ö ÀÖ´Ù.)
ÁÖ¼®
Æ®·£½ºÆ÷Æ® ½ºÅÃÀÌ ÇϺÎÀÇ NDIS ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ¹ÙÀεùµÈ ÈÄ¿¡ TDI Æ®·£½ºÆ÷Æ®´Â »õ·Ó°Ô ¼º¸³µÈ Æ®·£½ºÆ÷Æ®¿Í NIC°úÀÇ ¹ÙÀεù»ó¿¡¼ Ŭ¶óÀ̾ðÆ®ÀÇ ³×Æ®¿÷ I/O ¸®Äù½ºÆ®¿¡ ´ëÇØ¼ Ÿ°ÙÀ» ±¸ÇöÇϱâ À§ÇØ IoCreateDevice ÇÔ¼ö¸¦ °¡Áö°í ¸í¸íµÈ ÀåÄ¡ °´Ã¼¸¦ »ý¼ºÇؾßÇÑ´Ù. ±×¸®°í³ª¼ Æ®·£½ºÆ÷Æ®´Â TdiRegisterDeviceObject ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù. À̰ÍÀº TDI·Î ÇÏ¿©±Ý ÁÖ¾îÁø DeviceName Æ÷ÀÎÅÍ¿Í ÀÔ·Â °ªÀÌ TDI_PNP_OPCODE_ADDÀÎ PnPOpcode¸¦ °¡Áö°í Æ®·£½ºÆ÷Æ® Ŭ¶óÀ̾ðÆ®ÀÇ ¸ðµç µî·ÏµÈ ClientPnPBindingChange ·çƾÀ» È£ÃâÇϵµ·ÏÇÑ´Ù.
TdiRegisterDeviceObject ÇÔ¼öÀÇ ¼º°øÀûÀΠȣÃâÀÚ´Â Æ®·£½ºÆ÷Æ®°¡ ¹ÙÀεùÀ» ²÷¾úÀ» ¶§ TdiDeregisterDeviceObject ÇÔ¼ö·ÎÀÇ ¼øÂ÷ÀûÀÌ°í »óÈ£ÀûÀΠȣÃâÀ» À§Çؼ *DevRegistrationHandle¿¡ ¸®ÅϵǴ °ªÀ» ÀúÀåÇÑ´Ù. ¶ÇÇÑ Æ®·£½ºÆ÷Æ®´Â TdiRegisterNetAddress¿Í TdiPnPPowerRequest ÇÔ¼ö·ÎÀÇ ¼øÂ÷ÀûÀΠȣÃâÀ» À§Çؼ DeviceObject¿¡ ¹öÆÛÈµÈ ¹®ÀÚ¿À» ÀúÀåÇØ¾ßÇÑ´Ù.
IoCreateDevice ÇÔ¼öÈ£ÃâÀÇ Æ¯Â¡¿¡ ´ëÇØ¼´Â Ä¿³Î ¸ðµå µå¶óÀ̹ö ·¹ÆÛ·±½º¸¦ ºÁ¶ó.
TdiRegisterDeviceObject ÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL < DISPATCH_LEVEL¿¡¼ ½ÇÇàµÇ¾î¾ßÇÑ´Ù.
|