Direktif INF LogConfig
Perhatian
Mulai Windows 11 versi 22H2, paket driver yang menggunakan arahan ini tidak lagi memenuhi syarat untuk tanda tangan dari Pusat Pengembang Perangkat Keras.
Paket pengandar universal dan Driver Windows tidak dapat menggunakan direktif ini.
Direktif LogConfig mereferensikan satu atau beberapa bagian yang ditentukan inf-writer, yang masing-masing menentukan konfigurasi logis sumber daya perangkat keras − baris permintaan interupsi, rentang memori, port I/O, dan saluran DMA yang dapat digunakan oleh perangkat. Setiap bagian konfigurasi log menentukan sekumpulan sumber daya perangkat keras relatif bus alternatif yang dapat digunakan oleh perangkat.
[DDInstall] |
[DDInstall.LogConfigOverride]
LogConfig=log-config-section[,log-config-section]...
File INF untuk perangkat non-PnP menggunakan direktif ini untuk membuat konfigurasi dasar.
File INF untuk perangkat PnP hanya menggunakan direktif ini untuk membuat konfigurasi penimpaan.
Setiap bagian bernama yang direferensikan oleh arahan LogConfig memiliki formulir berikut:
[log-config-section]
ConfigPriority=priority-value[,config-type]
[DMAConfig=[DMAattrs:]DMANum[,DMANum]...]
[IOConfig=io-range[,io-range]...]
[MemConfig=mem-range[,mem-range]...]
[IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...]
[PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]]
[MfCardConfig=ConfigRegBase:ConfigOptions[:IoResourceIndex][(attrs)]...]
...
Entri
Nilai prioritas ConfigPriority=
Menentukan nilai prioritas untuk konfigurasi logis ini, sebagai salah satu hal berikut:
DIINGINKAN
Dikonfigurasi sementara, paling optimal.
BIASA
Dikonfigurasi sementara, kurang optimal daripada DESIRED. Ini adalah pengaturan umum.
NORMAL harus ditentukan jika log-config-section ditentukan dalam DDInstall. Bagian LogConfigOverride, dan tidak ada nilai jenis konfigurasi yang dapat ditentukan.
SUBOPTIMAL
Dikonfigurasi sementara, kurang optimal daripada NORMAL.
HARDRECONFIG
Memerlukan perubahan jumper untuk mengonfigurasi ulang.
HARDWIRED
Tidak dapat diubah.
HIDUPKAN ULANG
Mengharuskan mulai ulang berlaku.
REBOOT
Ini sama dengan RESTART.
POWEROFF
Memerlukan siklus daya untuk diterapkan.
DINONAKTIFKAN
Perangkat keras/perangkat dinonaktifkan.
DMAConfig=[DMAattrs:]DMANum[**,**DMANum]...]
DMAattrs bersifat opsional jika perangkat terhubung pada bus yang hanya memiliki saluran DMA 8-bit dan perangkat menggunakan DMA sistem standar. Jika tidak, itu bisa menjadi salah satu huruf berikut:
Letter | Makna |
---|---|
D | DMA 32-bit |
W | DMA 16-bit |
N | DMA 8-bit |
Jika perangkat menggunakan DMA bus-master, Anda harus menggunakan M dengan salah satu huruf berikut (saling eksklusif) yang menunjukkan jenis saluran DMA yang digunakan: A, B, atau F. Jika tidak ada A, B, atau F yang ditentukan, saluran DMA standar diasumsikan.
DMANum menentukan satu atau beberapa saluran DMA relatif bus sebagai angka desimal, masing-masing dipisahkan dari berikutnya dengan koma (,).
IOConfig=io-range[,io-range]...
Menentukan satu atau beberapa rentang port I/O untuk perangkat, dalam salah satu formulir berikut:
start-end[([decode-mask][:alias-offset][:attr])] (Rentang I/O Tipe 1)
mulai
Menentukan alamat awal rentang port I/O sebagai alamat heksadesimal 64-bit.
akhir
Menentukan alamat akhir rentang port I/O, juga sebagai alamat heksadesimal 64-bit.
dekode-mask
Menentukan jenis alias dan bisa menjadi salah satu dari yang berikut ini:
Nilai masker | Makna | nilai IOR_Alias |
---|---|---|
3ff | Dekode 10-bit | 0x04 |
fff | Dekode 12-bit | 0x10 |
ffff | Dekode 16-bit | 0x00 |
0 | Dekode positif | 0xFF |
alias-offset
Tidak digunakan.
attr
Menentukan huruf M jika rentang yang diberikan berada dalam memori sistem. Jika dihilangkan, rentang yang diberikan berada di ruang port I/O.
ukuran@min-max[%align-mask][([decode-mask][:alias-offset][:attr])] (Rentang I/O Tipe 2)
ukuran
Menentukan jumlah byte yang diperlukan untuk rentang port I/O sebagai nilai heksadesimal 32-bit.
min
Menentukan alamat awal rentang port I/O serendah mungkin sebagai alamat heksadesimal 64-bit.
max
Menentukan alamat akhir tertinggi dari rentang port I/O sebagai alamat heksadesimal 64-bit.
ratakan masker
Secara opsional menentukan 64 bitmask yang digunakan dalam operasi BITWISE AND untuk menyelaraskan awal rentang port I/O pada batas alamat integral (biasanya 32-bit atau 64-bit).
dekode-mask
Menentukan jenis alias dan bisa menjadi salah satu dari yang berikut ini:
Nilai masker | Makna | nilai IOR_Alias |
---|---|---|
3ff | Dekode 10-bit | 0x04 |
fff | Dekode 12-bit | 0x10 |
ffff | Dekode 16-bit | 0x00 |
0 | Dekode positif | 0xFF |
alias-offset
Tidak digunakan.
attr
Menentukan huruf M jika rentang yang diberikan berada dalam memori sistem. Jika dihilangkan, rentang yang diberikan berada di ruang port I/O.
MemConfig=mem-range[,mem-range]...
Menentukan satu atau beberapa rentang memori untuk perangkat dalam salah satu formulir berikut:
start-end[(attr)] | size@min-max[%align-mask][(attr)]
mulai
Menentukan alamat fisik awal (relatif bus) dari rentang memori perangkat sebagai nilai heksadesimal 64-bit.
akhir
Menentukan alamat fisik akhir rentang memori, juga sebagai nilai heksadesimal 64-bit.
attr
Menentukan atribut rentang memori sebagai satu atau beberapa huruf berikut:
Letter | Makna |
---|---|
R | Baca-saja |
W | Hanya tulis |
RW | Baca/tulis |
C | Penulisan gabungan diizinkan |
H | Dapat disimpan di cache |
F | Prefetchable |
D | Alamat dekode kartu adalah 32-bit, bukan 24-bit |
Jika R dan W ditentukan atau jika tidak ditentukan, baca/tulis diasumsikan.
ukuran
Menentukan jumlah byte yang diperlukan dalam rentang memori sebagai nilai heksadesimal 32-bit.
min
Menentukan alamat awal rentang memori perangkat serendah mungkin sebagai nilai heksadesimal 64-bit.
max
Menentukan alamat akhir setinggi mungkin dari rentang memori sebagai nilai heksadesimal 64-bit.
ratakan masker
Secara opsional menentukan 64 bitmask yang digunakan dalam operasi BITWISE AND untuk menyelaraskan awal rentang memori perangkat pada batas alamat integral (biasanya 64-bit).
Jika align-mask dihilangkan, perataan memori default berada pada batas 4K (FFFFF000).
IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
IRQattrs dihilangkan jika perangkat menggunakan IRQ relatif bus yang dipicu tepi. Jika tidak, tentukan L untuk menunjukkan IRQ dan LS yang dipicu tingkat jika perangkat dapat berbagi baris IRQ yang tercantum dalam entri ini.
IRQNum menentukan satu atau beberapa IRQ relatif bus yang dapat digunakan perangkat sebagai angka desimal, masing-masing dipisahkan dari koma berikutnya (,).
PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
Mengonfigurasi register CardBus dan/atau membuat hingga dua jendela memori permanen yang memetakan ke ruang atribut perangkat. Driver dapat menggunakan jendela memori untuk mengakses ruang atribut dari ISR. Tentukan semua nilai numerik dalam format heksadesimal.
Elemen entri PcCardConfig adalah sebagai berikut:
ConfigIndex
Menentukan indeks konfigurasi PCMCIA 8-bit untuk perangkat pada bus PCMCIA.
MemoryCardBase1
Secara opsional menentukan alamat dasar 32-bit untuk jendela memori pertama.
MemoryCardBase2
Secara opsional menentukan alamat dasar 32-bit untuk jendela memori kedua.
attrs
Secara opsional menentukan satu atau beberapa atribut untuk perangkat, dipisahkan oleh spasi. Penentu atribut tidak valid membatalkan seluruh entri PcCardConfig . Jika lebih dari satu penentu untuk atribut tertentu disediakan, atribut diterapkan ke I/O individu atau jendela memori untuk perangkat. Jika hanya satu penentu yang disediakan, atribut tersebut diterapkan ke semua jendela (lihat contoh berikut).
Secara khusus, jika beberapa penentu disediakan, penentu pertama yang ditemukan membaca dari kiri ke kanan akan diterapkan ke jendela pertama, dan penentu berikutnya diterapkan ke jendela kedua. Maksimal dua jendela I/O dan dua jendela memori dapat dikontrol oleh satu entri PcCardConfig . Jika perangkat memiliki lebih dari dua jendela memori, entri PcCardConfig kedua harus disertakan.
Atributnya meliputi:
Atribut | Deskripsi |
---|---|
W | Jalur data I/O 16-bit. Defaultnya adalah 8-bit jika INF menentukan arahan LogConfig . Jika tidak ada direktif LogConfig yang ditentukan, driver menggunakan I/O 16-bit. |
Sn | ~Sumber IOCS16. Jika n adalah 0, ~IOCS16 didasarkan pada nilai bit ukuran data. Jika n adalah 1, ~IOCS16 didasarkan pada sinyal ~IOIS16 dari perangkat. Defaultnya adalah S1. |
Zn | I/O 8-bit, status tunggu nol. Jika n adalah 1, akses I/O 8-bit terjadi dengan nol status tunggu tambahan. Jika n adalah 0, akses terjadi dengan status tunggu tambahan. Bendera ini tidak memiliki arti untuk I/O 16-bit. Defaultnya adalah Z0. |
Xln | Status tunggu I/O. Jika n adalah 1, akses sistem 16-bit terjadi dengan satu status tunggu tambahan. Defaultnya adalah Xl1. |
M | Jalur data memori 16-bit. Defaultnya adalah 8-bit. |
M8 | Jalur data memori 8-bit. |
XMn | Status tunggu memori, di mana n bisa 0, 1, 2 atau 3. Nilai ini menentukan jumlah status tunggu tambahan untuk akses 16-bit ke jendela memori. Defaultnya adalah XM3. |
A | Rentang memori yang akan dipetakan sebagai Memori atribut. |
C | Rentang memori yang akan dipetakan sebagai Memori Umum (default). |
Misalnya, nilai attrs (WB CA M XM1 XI0) diterjemahkan ke yang berikut:
1st I/O window is 16-bit
2nd I/O window 8-bit
1st memory window is common
2nd memory window is attribute
Memory is 16-bit
One wait state on memory windows
Zero wait states on I/O windows
MfCardConfig ConfigRegBase:ConfigOptions[:IoResourceIndex][(attrs)]...=
Menentukan lokasi atribut-memori dari set register konfigurasi untuk satu fungsi perangkat multifungsi, sebagai berikut:
ConfigRegBase
Menentukan offset atribut dari register konfigurasi untuk fungsi perangkat multifungsi ini.
ConfigOptions
Menentukan daftar opsi konfigurasi PCMCIA 8-bit.
IoResourceIndex
Menentukan indeks ke entri IOConfig untuk digunakan driver bus dalam pemrograman basis I/O konfigurasi dan register batas. Indeks ini berbasis nol, yaitu, nol menunjuk entri IOConfig awal di bagian konfigurasi log ini.
attrs
Jika diatur ke huruf A, arahkan driver bus PCMCIA untuk mengaktifkan audio aktif dalam konfigurasi dan daftar status.
Setiap entri MfCardConfig menyediakan informasi tentang satu fungsi perangkat multifungsi. Ketika sekumpulan LogConfig mengarahkan setiap referensi log-config-section diskrit di DDInstall INF. Bagian LogConfigOverride, setiap log-config-section harus memiliki entrinya, termasuk entri MfCardConfig, yang tercantum dalam urutan yang sama.
Keterangan
Direktif LogConfig dapat ditentukan di bawah bagian INF DDInstall per produsen per model atau INF DDInstall. Bagian LogConfigOverride.
INF untuk perangkat non-PnP yang mendukung beberapa konfigurasi logis alternatif biasanya mendefinisikan sekumpulan bagian konfigurasi log di bawah bagian DDInstall . Setiap bagian konfigurasi log menentukan sekumpulan sumber daya konfigurasi logis yang diskrit. Ini juga mencakup entri ConfigPriority , yang memberi peringkat pada setiap konfigurasi logis sesuai dengan efeknya pada performa perangkat dan driver, kemudahan inisialisasi, dan sebagainya.
Untuk perangkat PnP, manajer PnP menetapkan serangkaian sumber daya perangkat keras logis ke setiap perangkat PnP. Artinya, manajer PnP meminta driver bus sistem, menerima laporan mereka tentang sumber daya konfigurasi bus I/O per perangkat yang digunakan, dan menetapkan set sumber daya perangkat keras logis per perangkat untuk mencapai keseimbangan seluruh sistem terbaik dalam penggunaan semua sumber daya tersebut.
Akibatnya, arahan LogConfig di bawah bagian DDInstall diabaikan untuk perangkat PnP,. Untuk mengambil alih sumber daya yang dilaporkan oleh bus untuk perangkat PnP, sertakan arahan LogConfig di bawah DDInstall. Bagian LogConfigOverride . Dalam hal ini, sumber daya yang ditentukan di bagian log-config-digunakan alih-alih yang dilaporkan oleh bus.
Ekstensi platform dapat ditambahkan ke bagian DDInstall yang berisi arahan LogConfig, atau ke DDInstall. Bagian LogConfigOverride, untuk menentukan konfigurasi logis khusus platform atau khusus OS. Untuk informasi selengkapnya, lihat Membuat File INF.
Nama log-config-section tertentu harus unik untuk file INF, tetapi dapat direktif LogConfig di bagian INF DDInstall lainnya untuk perangkat yang sama. Setiap nama bagian yang dibuat inf-writer harus unik dalam file INF dan harus mengikuti aturan umum untuk menentukan nama bagian. Untuk informasi selengkapnya tentang aturan ini, lihat Aturan Sintaks Umum untuk File INF.
Hanya satu entri ConfigPriority yang dapat digunakan di setiap log-config-section. Mungkin ada lebih dari satu entri lainnya, tergantung pada persyaratan sumber daya perangkat keras perangkat.
Satu atau beberapa entri MfCardConfig= hanya dapat muncul di bagian log-config-section yang direferensikan oleh direktif LogConfig di DDInstall. Bagian LogConfigOverride dari INF untuk perangkat multifungsi. Untuk informasi selengkapnya tentang file INF untuk perangkat multifungsi, lihat Mendukung Perangkat Multifungsi.
Entri dan Nilai Bagian yang Dirujuk LogConfig
Dari bagian konfigurasi log, alat penginstal sistem membangun rekaman konfigurasi logis biner dan menyimpannya di registri.
File INF dapat berisi sejumlah log-config-section per perangkat. Namun, setiap bagian tersebut harus berisi informasi lengkap untuk menginstal satu perangkat. Secara umum, INF harus menentukan entri di setiap log-config-sections dalam urutan yang sama. INF harus menentukan setiap set entri dalam urutan yang paling cocok dengan cara driver menginisialisasi perangkatnya.
Jika ada lebih dari satu bagian konfigurasi log untuk perangkat tertentu, hanya salah satu bagian INF ini yang digunakan selama penginstalan. File INF semacam itu sebagian mengontrol bagian mana yang digunakan dengan nilai ConfigPriority yang disediakannya di setiap bagian konfigurasi log tersebut. Artinya, alat penginstal sistem mencoba untuk menghormati prioritas konfigurasi apa pun dalam file INF, tetapi mungkin memilih konfigurasi logis berpangkat lebih rendah jika konflik dengan perangkat yang sudah diinstal ditemukan.
Selama penginstalan, satu dan hanya satu sumber daya dari setiap entri di bagian konfigurasi log tertentu yang dipilih dan ditetapkan ke perangkat tertentu. Jika perangkat tertentu membutuhkan lebih dari satu sumber daya dengan jenis yang sama, sekumpulan entri jenis tersebut harus digunakan di bagian konfigurasi lognya.
Misalnya, untuk memastikan dua rentang port I/O untuk perangkat tertentu, dua entri IOConfig= harus ditentukan di bagian konfigurasi log untuk perangkat tersebut. Di sisi lain, jika perangkat tidak memerlukan IRQ, INF-nya dapat menghilangkan entri IRQConfig dari log-config-sections.
Contoh
Contoh ini menunjukkan beberapa entri PcCardConfig yang valid untuk perangkat PCMCIA.
PcCardConfig=0:E0000:F0000(W)
PcCardConfig=0:E0000(M)
PcCardConfig=0::(W)
PcCardConfig=0(W)
Contoh ini menunjukkan spesifikasi rentang I/O Tipe 1 dalam entri IOConfig . Ini menentukan wilayah port I/O, berukuran delapan byte, yang dapat dimulai pada 1F8, 2F8, atau 3F8.
IOConfig=1F8-1FF, 2F8-2FF, 3F8-3FF
Sebaliknya, contoh ini menunjukkan spesifikasi rentang I/O Tipe 2 dalam entri IOConfig . Ini menentukan wilayah port I/O, ukuran delapan byte, yang dapat dimulai pada 300, 308, 310, 318, 320, atau 328.
IOConfig=8@300-32F%FF8
Contoh ini menunjukkan serangkaian entri IOConfig untuk perangkat empat port, masing-masing menentukan rentang port I/O yang diimbangi dengan 0x400 byte dari berikutnya.
IoConfig=0x200-0x21f
IoConfig=0x600-0x61f
IoConfig=0xA00-0xA1f
IoConfig=0xE00-0xE1f
Dua contoh berikutnya menunjukkan entri MemConfig yang khas.
Contoh ini menentukan wilayah memori 32K byte yang dapat dimulai dari C0000 atau D0000.
MemConfig=C0000-C7FFF, D0000-D7FFF
Contoh ini menentukan wilayah memori 32k byte mulai dari batas 64K.
MemConfig=8000@C0000-D7FFF%F0000
Contoh ini menunjukkan bagaimana file INF kelas HDC sistem menyiapkan beberapa log-config-sections untuk pengontrol hard disk ESDI generik dan menggunakan DDInstall. Bagian LogConfigOverride untuk pengontrol IDE tertentu.
[MS_HDC] ; per-manufacturer Models section
%FujitsuIdePccard.DeviceDesc% =
atapi_fujitsu_Inst, PCMCIA\FUJITSU-IDE-PC_CARD-DDF2
%*PNP0600.DeviceDesc% = atapi_Inst, *PNP0600 ; generic ESDI HDCs
; ... other manufacturers' Models sections omitted
[atapi_Inst]
CopyFiles = @atapi.sys
LogConfig = esdilc1, esdilc2, esdilc3, esdilc4
; ... [atapi_Inst.Services] + service/EventLog-install omitted here
[esdilc1]
ConfigPriority=HARDWIRED
IOConfig=1f0-1f7(3ff::)
IoConfig=3f6-3f6(3ff::)
IRQConfig=14
[esdilc2]
ConfigPriority=HARDWIRED
IOConfig=170-177(3ff::)
IoConfig=376-376(3ff::)
IRQConfig=15
[esdilc3]
ConfigPriority=HARDWIRED
IOConfig=1e8-1ef(3ff::)
IoConfig=3ee-3ee(3ff::)
IRQConfig=11
[esdilc4]
; ...
[atapi_fujitsu_Inst.LogConfigOverride]
LogConfig = fujitsu.LogConfig0
[fujitsu.LogConfig0]
ConfigPriority=NORMAL
IOConfig=10@100-400%fff0
IRQConfig=14,15,5,7,9,11,12,3
PcCardConfig=1:0:0(W)
Untuk beberapa contoh bagaimana entri MfCardConfig digunakan, lihat Mendukung Kartu PC yang Memiliki Alamat Pendaftaran Konfigurasi Yang Tidak Lengkap.