Fungsi NdisMRegisterDmaChannel (ndis.h)
Fungsi NdisMRegisterDmaChannel mengklaim saluran pengontrol DMA sistem selama inisialisasi untuk operasi DMA pada NIC bawahan atau pada NIC master bus ISA.
Sintaks
NDIS_STATUS NdisMRegisterDmaChannel(
[out] PNDIS_HANDLE MiniportDmaHandle,
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] UINT DmaChannel,
[in] BOOLEAN Dma32BitAddresses,
[in] PNDIS_DMA_DESCRIPTION DmaDescription,
[in] ULONG MaximumLength
);
Parameter
[out] MiniportDmaHandle
Pointer ke variabel yang disediakan penelepon di mana fungsi ini mengembalikan handel yang digunakan driver miniport dalam panggilan berikutnya ke fungsi DMA sistem NdisMXxx .
[in] MiniportAdapterHandle
Adaptor miniport menangani input ke Fungsi MiniportInitializeEx .
[in] DmaChannel
Diabaikan. Atur saluran DMA, jika ada, di DmaDescription .
[in] Dma32BitAddresses
Nilai boolean yang TRUE jika NIC memiliki 32 baris alamat. Jika tidak, itu adalah FALSE.
[in] DmaDescription
Penunjuk ke struktur NDIS_DMA_DESCRIPTION yang diisi oleh pemanggil. Struktur ini didefinisikan sebagai berikut:
typedef struct _NDIS_DMA_DESCRIPTION {
BOOLEAN DemandMode;
BOOLEAN AutoInitialize;
BOOLEAN DmaChannelSpecified;
DMA_WIDTH DmaWidth;
DMA_SPEED DmaSpeed;
ULONG DmaPort;
ULONG DmaChannel;
} NDIS_DMA_DESCRIPTION, *PNDIS_DMA_DESCRIPTION;
Driver harus menginisialisasi struktur ini dengan nol sebelum mengisi anggota berikut:
DemandMode
Nilai boolean yang TRUE jika subordinat NIC menggunakan mode permintaan pengontrol DMA sistem. Jika tidak, itu adalah FALSE.
Menginisialisasi Otomatis
Nilai boolean yang TRUE jika NIC subordinat menggunakan mode autoinisialisasi pengontrol DMA sistem. Jika tidak, itu adalah FALSE.
DmaChannelSpecified
Nilai boolean yang TRUE jika DmaChannel diatur ke nilai relatif bus dari saluran pengontrol DMA sistem yang digunakan oleh NIC. Jika tidak, itu adalah FALSE.
DmaWidth
Lebar transfer untuk operasi DMA, salah satu Width8Bits, Width16Bits, atau Width32Bits.
DmaSpeed
Kecepatan DMA sebagai salah satu dari Compatible, TypeA, TypeB, atau TypeC.
DmaPort
Anggota ini mengacu pada bus MCA, yang tidak lagi didukung. Anggota ini harus nol.
DmaChannel
Jumlah relatif bus dari saluran pengontrol DMA sistem yang digunakan oleh NIC.
[in] MaximumLength
Jumlah maksimum byte yang dapat ditransfer NIC dalam satu operasi DMA. Jika NIC memiliki kapasitas transfer tak terbatas, atur parameter ini ke -1.
Mengembalikan nilai
NdisMRegisterDmaChannel dapat mengembalikan salah satu nilai status berikut:
Menampilkan kode | Deskripsi |
---|---|
|
NDIS mengklaim saluran DMA yang ditentukan dalam registri untuk NIC pemanggil dan menyiapkan sumber daya yang diperlukan untuk operasi DMA berikutnya oleh driver miniport. |
|
Upaya untuk mengklaim saluran DMA di registri telah gagal, mungkin karena driver lain telah mengklaim saluran tersebut untuk perangkatnya. NdisMRegisterDmaChannel mencatat kesalahan jika ini terjadi. |
|
NDIS tidak dapat mengalokasikan sumber daya sistem yang dibutuhkan untuk mendukung operasi DMA oleh driver miniport ini. |
|
Baik jenis bus atau nomor bus berada di luar jangkauan atau pengemudi menyatakan NIC menjadi master bus pada bus I/O selain ISA. |
Keterangan
Driver NIC subordinat-DMA harus memanggil NdisMRegisterDmaChannel dari fungsi MiniportInitializeEx untuk mencadangkan sumber daya sistem untuk operasi DMA berikutnya dan untuk mengklaimnya di registri.
Pengemudi NIC master bus ISA juga harus memanggil NdisMRegisterDmaChannel dari MiniportInitializeEx untuk mengklaim saluran pengontrol DMA sistem untuk NIC di registri.
MiniportInitializeEx harus memanggil Fungsi NdisMSetMiniportAttributes sebelum memanggil NdisMRegisterDmaChannel.
MiniportInitializeEx memperoleh nilai relatif bus yang diteruskan ke NdisMRegisterDmaChannel baik dari registri atau dengan memanggil fungsi NdisMGetBusData .
Jika driver seperti itu tidak dapat mengalokasikan sumber daya DMA sistem yang dibutuhkan perangkatnya, MiniportInitializeEx harus merilis semua sumber daya yang sudah dialokasikan untuk NIC dan, kemudian, gagal inisialisasi untuk NIC tersebut.
Jika driver berhasil mendaftarkan saluran DMA, kemudian harus memanggil NdisMDeregisterDmaChannel berfungsi untuk membatalkan pendaftaran saluran DMA.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung untuk driver NDIS 6.0 dan NDIS 5.1 (lihat NdisMRegisterDmaChannel (NDIS 5.1)) di Windows Vista. Didukung untuk driver NDIS 5.1 (lihat NdisMRegisterDmaChannel (NDIS 5.1)) di Windows XP. |
Target Platform | Universal |
Header | ndis.h (termasuk Ndis.h) |
Pustaka | Ndis.lib |
IRQL | PASSIVE_LEVEL |
Aturan kepatuhan DDI | Irql_Miniport_Driver_Function(ndis) |