วิธีการควบคุมลำดับโหลดโปรแกรมควบคุมอุปกรณ์

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 115486 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

windows NT จะได้รับการออกแบบรอบ ๆ แนวคิดว่า โปรแกรมควบคุมแรกเพื่ออ้างสิทธิอุปกรณ์การขอรับความเป็นเจ้าของอุปกรณ์นั้น ความเป็นเจ้าของนี้สามารถใช้ร่วมกัน หรือสามารถเป็นเอกสิทธิ์เฉพาะบุคคล ซึ่งไม่ขึ้นกับโปรแกรมควบคุมอุปกรณ์ claiming ถ้ามีการขออุปกรณ์ถูกล็อกแบบเอกสิทธิ์เฉพาะบุคคลคืน โดยโปรแกรมควบคุมอุปกรณ์ ความพยายามในการเพิ่มเติมใด ๆ เพื่ออ้างสิทธิอุปกรณ์ โดยโปรแกรมควบคุมอุปกรณ์ที่โหลดในภายหลังล้มเหลว เนื่องจากความตัวนี้ คือ imperative ว่า ใบสั่งที่โหลดโปรแกรมควบคุมอุปกรณ์สามารถปรับเปลี่ยน โดยผู้สร้างโปรแกรมควบคุมอุปกรณ์ บทความนี้อธิบายวิธีการสองที่คุณสามารถใช้เพื่อควบคุมใบสั่งที่โหลดโปรแกรมควบคุมอุปกรณ์

ข้อมูลเพิ่มเติม

มีสองวิธีที่คุณสามารถใช้เพื่อควบคุมใบสั่งที่โหลดโปรแกรมควบคุมอุปกรณ์ ทั้งสองวิธีใช้ประโยชน์จากรายการในรีจิสทรีที่พบใน \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control วิธีแรกคือการ แก้ไข ServiceGroupOrder วิธีการที่สองมีการ กำหนดค่าแท็กที่กำหนดลำดับของโปรแกรมควบคุมที่โหลดตามที่ GroupOrderList ค่าแท็กชนิดการเริ่มการทำงาน และชื่อของกลุ่มในแบบ HKLM\SYSTEM\CurrentControlSet\Services\ <drivername>คีย์ที่ต้องเพิ่มก่อนค่าที่สามารถแสดงรายการในรายชื่อใบสั่งของกลุ่ม</drivername>

วิธีการสองวิธีเหล่านี้ใช้สำหรับโปรแกรมควบคุมอุปกรณ์ที่มีค่าเริ่มต้นของ 0 (SERVICE_BOOT_START) หรือ 1 (SERVICE_SYSTEM_START) เท่านั้น ในทุกกรณี โปรแกรมควบคุมอุปกรณ์ที่ มีค่าเริ่มต้นของการโหลด 0 ก่อนโปรแกรมควบคุมอุปกรณ์ใด ๆ ด้วยค่าเริ่มต้นเป็น 1 พยายามโหลด

วิธีที่ 1: ServiceGroupOrder

ServiceGroupOrder ประกอบด้วยรายชื่อกลุ่มในใบสั่งที่พวกเขาจะถูกโหลด ต่อไปนี้เป็นเนื้อหา unmodified ของ ServiceGroupOrder:

มินิพอร์ต SCSI
พอร์ต
ดิสก์หลัก
คลา SCSI
คลา CDROM SCSI
ตัวกรอง
ระบบแฟ้มสำหรับเริ่มระบบ
ฐาน:
ตัวชี้พอร์ต
พอร์ตแป้นพิมพ์
คลาสของตัวชี้
คลาสของแป้นพิมพ์
เริ่มการแสดงผล
วิดีโอ
บันทึกวิดีโอ
ระบบแฟ้ม
แฟ้มบันทึกเหตุการณ์
โปรแกรมควบคุมของกระแสข้อมูล
ndis
tdi
NetBIOSGroup
SpoolerGroup
ตาม ServiceGroupOrder ไดรเวอร์ของอุปกรณ์ในการโหลด "SCSI คลาส" ของกลุ่มทั้งหมดหลังจากโปรแกรมควบคุมอุปกรณ์ ในกลุ่ม "ดิสก์หลัก" และ ก่อนที่โปรแกรมควบคุมอุปกรณ์ในการโหลดกลุ่ม "คลาส CDROM SCSI" สูงที่กลุ่มของโปรแกรมควบคุมอุปกรณ์อยู่ในรายการ sooner ที่จะโหลด รายการ ServiceGroupOrder ถูกสแกนสองครั้ง แรก โปรแกรมควบคุมอุปกรณ์ทั้งหมดที่ มีค่าเริ่มต้นของการโหลด 0 นั้น โปรแกรมควบคุมอุปกรณ์ทั้งหมดด้วยค่าเริ่มต้นของการโหลดที่ 1 ซึ่ง ไดรเวอร์ของอุปกรณ์ ด้วยค่าเริ่มต้นของการระบุ 0 ก่อนโปรแกรมควบคุมอุปกรณ์ใด ๆ ด้วยค่าเริ่มต้นเป็น 1 ไม่ว่าตำแหน่งของใดบนรายการ ServiceGroupOrder

เป็นไปได้สำหรับการเขียนโปรแกรมควบคุมอุปกรณ์เพื่อแก้ไขการ ServiceGroupOrder การทำเช่นนี้ กลุ่มใหม่คุณสามารถสร้างที่ตำแหน่งใด ๆ ในรายการ ตัวอย่างที่ดีอาจมีโปรแกรม SCSI คลาสของอุปกรณ์ควบคุมที่เรียกว่า "SAMPLDRV" ต้องโหลดก่อนการ "SCSIDISK" ได้เนื่องจาก SCSIDISK คือ claiming อุปกรณ์ที่ SAMPLDRV จำเป็นต้องใช้เพื่ออ้างสิทธิ นี่คือรายการรีจิสทรีของ SCSIDISK:
       \registry\machine\system\currentcontrolset\services\scsidisk
          Type = REG_DWORD 0x00000001
          Start = REG_DWORD 0x00000000
          Group = SCSI class
          ErrorControl = REG_DWORD 0x00000000
          DependOnGroup = REG_MULTI_SZ "SCSI miniport"
				

กลุ่มใหม่สามารถถูกเพิ่มเข้าไป ServiceGroupOrder เรียกว่า "โหลดฉันแรก" และ SAMPLDRV สามารถมีกลุ่มการตั้งค่าให้โหลดฉันแรก นี่คือ ServiceGroupOrder ที่ถูกปรับเปลี่ยน:

มินิพอร์ต SCSI
พอร์ต
ดิสก์หลัก
โหลดฉันครั้งแรก
คลา SCSI
คลา CDROM SCSI
ตัวกรอง
ระบบแฟ้มสำหรับเริ่มระบบ
.
.
.
นี่คือรายการรีจิสทรีของ SAMPLDRV:
       \registry\machine\system\currentcontrolset\services\sampldrv
          Type = REG_DWORD 0x00000001
          Start = REG_DWORD 0x00000000
          Group = Load Me First
          ErrorControl = REG_DWORD 0x00000000
          DependOnGroup = REG_MULTI_SZ "SCSI miniport"
				

มีการกำหนดค่านี้ SAMPLDRV โหลดก่อนการ SCSIDISK

วิธีที่#2: GroupOrderList และค่าแท็ก

คีย์ไม่จำเป็นที่เรียกว่าแท็กสามารถถูกรวมไว้ในรีจิสทรีของโปรแกรมควบคุมอุปกรณ์ ค่าของแท็กช่วยในการกำหนดลำดับในการโหลดของโปรแกรมควบคุมอุปกรณ์ภายในกลุ่ม ใบสั่งในการโหลดไม่จำเป็นต้องเป็นตัวเลขตามลำดับ จะ อยู่ในใบสั่งที่กำหนด โดยการ GroupOrderList รายการแรกสำหรับแต่ละกลุ่มใน GroupOrderList เป็นจำนวนค่าแท็ก นี่คือตามตามลำดับตัวเลขที่มีค่าแท็กจะถูกโหลด โปรแกรมควบคุมอุปกรณ์ในกลุ่มได้ก่อนโหลดตามที่ค่าแท็กเหล่านั้นตามที่กำหนด โดย GroupOrderList ถ้าโปรแกรมควบคุมอุปกรณ์ที่ไม่มีค่าแท็ก หรือ ถ้าค่าแท็กไม่ได้อยู่ใน GroupOrderList จากนั้นโปรแกรมควบคุมอุปกรณ์เหล่านี้โหลดหลังจากที่โหลดโปรแกรมควบคุมอุปกรณ์ที่ มีค่าแท็กที่ถูกต้อง สำหรับโปรแกรมควบคุมอุปกรณ์เหล่านี้ ลำดับของการโหลดจะไม่มี เหนือที่ โปรแกรมควบคุมอุปกรณ์ทั้งหมดในกลุ่มโหลดก่อนที่โหลดกลุ่มถัดไป

ต่อไปนี้คือผลลัพธ์ที่เป็นบางส่วนของ GroupOrderList:
      \registry\machine\system\currentcontrolset\control\grouporderlist
          Base = REG_BINARY 0d 00 00 00 01 00...
          Extended base = REG_BINARY 04 00 00 00 01 00...
          Filter = REG_BINARY 05 00 00 00 01 00...
          Keyboard Class = REG_BINARY 01 00 00 00 01 00...
          Keyboard Port = REG_BINARY 01 00 00 00 01 00...
          Ndis = REG_BINARY 09 00 00 00 01 00...
          Pointer Class = REG_BINARY 01 00 00 00 01 00...
          Pointer Port = REG_BINARY 03 00 00 00 01 00...
          .
          .
          .
				

หมายเหตุ: ไม่มีค่าสำหรับคลา SCSI อยู่ กลุ่มไม่ทั้งหมดถูกแสดงใน GroupOrderList เมื่อกลุ่มไม่ได้อยู่ใน GroupOrderList ใบสั่งที่โหลดโปรแกรมควบคุมอุปกรณ์ภายในกลุ่มไม่สามารถมี

เท่ากับ ServiceGroupOrder, GroupOrderList สามารถแก้ไข ใช้ตัวอย่างเดียวเป็นข้างต้น รายการแท็กสำหรับคลาส SCSI สามารถเพิ่ม:
      \registry\machine\system\currentcontrolset\control\grouporderlist
          SCSI class = REG_BINARY 02 00 00 00 02 00 00 00 01 00 00 00
          Base = REG_BINARY 0d 00 00 00 01 00...
          Extended base = REG_BINARY 04 00 00 00 01 00...
          .
          .
          .
				

ในตัวอย่างนี้ ระดับชั้น SCSI กลุ่มรู้จักค่าแท็กที่สอง 00000001 และ 00000002 ใบสั่งที่โหลดค่าแท็กเป็น 00000002 ก่อนตาม ด้วย 00000001 ถ้าใน SCSI คลากลุ่ม ซึ่งจะเหมือนกับ SCSIDISK, SAMPLDRV ค่าอย่างใดอย่างหนึ่งแท็ก guarantees ว่า SAMPLDRV โหลดก่อนการ SCSIDISK เนื่องจาก SCSIDISK มีค่าไม่มีแท็ก และโปรแกรมควบคุมที่ไม่มีแท็กโหลดครั้งสุดท้ายในกลุ่ม

If for some reason SCSIDISK is assigned a Tag value of 0x00000001, SAMPLDRV loads before SCSIDISK when SAMPLDRV is assigned a Tag value of 00000002:
       \registry\machine\system\currentcontrolset\services\sampldrv
          Type = REG_DWORD 0x00000001
          Start = REG_DWORD 0x00000000
          Group = SCSI class
          ErrorControl = REG_DWORD 0x00000000
          DependOnGroup = REG_MULTI_SZ "SCSI miniport"
          Tag = REG_DWORD 0x00000002
				

คุณสมบัติ

หมายเลขบทความ (Article ID): 115486 - รีวิวครั้งสุดท้าย: 6 มกราคม 2554 - Revision: 2.0
ใช้กับ
  • Microsoft Win32 Device Driver Kit for Windows NT 4.0
Keywords: 
kbhowto kbmt KB115486 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:115486

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com