Bagikan melalui


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_STATUS_SUCCESS
NDIS mengklaim saluran DMA yang ditentukan dalam registri untuk NIC pemanggil dan menyiapkan sumber daya yang diperlukan untuk operasi DMA berikutnya oleh driver miniport.
NDIS_STATUS_RESOURCE_CONFLICT
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_STATUS_RESOURCES
NDIS tidak dapat mengalokasikan sumber daya sistem yang dibutuhkan untuk mendukung operasi DMA oleh driver miniport ini.
NDIS_STATUS_FAILURE
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)

Lihat juga

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes