Freigeben über


NdisMRegisterDmaChannel-Funktion (ndis.h)

Die NdisMRegisterDmaChannel-Funktion beansprucht während der Initialisierung für DMA-Vorgänge auf einer untergeordneten NIC oder auf einer ISA-Bus-master NIC einen System-DMA-Controllerkanal.

Syntax

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

Ein Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der diese Funktion ein Handle zurückgibt, das der Miniporttreiber in nachfolgenden Aufrufen der NdisM Xxx-System-DMA-Funktionen verwendet.

[in] MiniportAdapterHandle

Die Eingabe des Miniportadapters an die MiniportInitializeEx-Funktion .

[in] DmaChannel

Ignoriert. Legen Sie ggf. den DMA-Kanal unter DmaDescription fest.

[in] Dma32BitAddresses

Ein boolescher Wert, der TRUE ist, wenn die NIC über 32 Adresszeilen verfügt. Andernfalls ist es FALSE.

[in] DmaDescription

Ein Zeiger auf eine vom Aufrufer ausgefüllte NDIS_DMA_DESCRIPTION-Struktur. Diese Struktur ist wie folgt definiert:

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;

Der Treiber sollte diese Struktur mit Nullen initialisieren, bevor die folgenden Member ausgefüllt werden:

DemandMode

Ein boolescher Wert, der TRUE ist, wenn die untergeordnete NIC den Bedarfsmodus des DMA-Systems verwendet. Andernfalls ist es FALSE.

AutoInitialisieren

Ein boolescher Wert, der TRUE ist, wenn die untergeordnete NIC den Autoinitialisierungsmodus des DMA-Systems verwendet. Andernfalls ist es FALSE.

DmaChannelSpecified

Ein boolescher Wert, der TRUE ist, wenn DmaChannel auf den busrelativen Wert des DMA-Controllerkanals des Systems festgelegt ist, der von der NIC verwendet wird. Andernfalls ist es FALSE.

DmaWidth

Die Übertragungsbreite für DMA-Vorgänge, eine von Width8Bits, Width16Bits oder Width32Bits.

DmaSpeed

Die DMA-Geschwindigkeit als eine von Compatible, TypeA, TypeB oder TypeC.

DmaPort

Dieser Member bezieht sich auf den MCA-Bus, der nicht mehr unterstützt wird. Dieser Member muss 0 (null) sein.

DmaChannel

Die busrelative Nummer des DMA-Controllerkanals des Systems, der von der NIC verwendet wird.

[in] MaximumLength

Die maximale Anzahl von Bytes, die die NIC in einem einzelnen DMA-Vorgang übertragen kann. Wenn die NIC über eine unbegrenzte Übertragungskapazität verfügt, legen Sie diesen Parameter auf -1 fest.

Rückgabewert

NdisMRegisterDmaChannel kann einen der folgenden status-Werte zurückgeben:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
NDIS beanspruchte den angegebenen DMA-Kanal in der Registrierung für die NIC des Aufrufers und richtete die erforderlichen Ressourcen für nachfolgende DMA-Vorgänge durch den Miniporttreiber ein.
NDIS_STATUS_RESOURCE_CONFLICT
Ein Versuch, den DMA-Kanal in der Registrierung zu beanspruchen, ist fehlgeschlagen, möglicherweise weil ein anderer Treiber diesen Kanal bereits für sein Gerät beansprucht hat. NdisMRegisterDmaChannel protokolliert in diesem Fall einen Fehler.
NDIS_STATUS_RESOURCES
NDIS konnte die Systemressourcen, die für die Unterstützung von DMA-Vorgängen durch diesen Miniporttreiber erforderlich sind, nicht zuordnen.
NDIS_STATUS_FAILURE
Entweder liegt der Bustyp oder die Busnummer außerhalb des Bereichs, oder der Treiber hat die NIC als Bus master auf einem anderen E/A-Bus als ISA deklariert.

Hinweise

Ein Treiber einer untergeordneten DMA-NIC muss NdisMRegisterDmaChannel aus seiner MiniportInitializeEx-Funktion aufrufen, um Systemressourcen für nachfolgende DMA-Vorgänge zu reservieren und in der Registrierung abzurufen.

Der Treiber einer ISA-bus-master NIC muss auch NdisMRegisterDmaChannel von MiniportInitializeEx aufrufen, um einen DMA-Systemcontrollerkanal für die NIC in der Registrierung abzurufen.

MiniportInitializeEx muss aufrufen NdisMSetMiniportAttributes-Funktion vor dem Aufrufen von NdisMRegisterDmaChannel.

MiniportInitializeEx hat die busrelativen Werte abgerufen, die an NdisMRegisterDmaChannel übergeben wurden, entweder aus der Registrierung oder durch Aufrufen der NdisMGetBusData-Funktion .

Wenn ein solcher Treiber die systemeigenen DMA-Ressourcen nicht zuordnen kann, die sein Gerät benötigt, sollte MiniportInitializeEx alle Ressourcen freigeben, die ihm bereits für die NIC zugewiesen wurden, und dann die Initialisierung für diese NIC fehlschlägt.

Wenn der Treiber den DMA-Kanal erfolgreich registriert, muss er später die NdisMDeregisterDmaChannel-Funktion , um die Registrierung des DMA-Kanals aufzuheben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt für NDIS 6.0- und NDIS 5.1-Treiber (siehe NdisMRegisterDmaChannel (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe NdisMRegisterDmaChannel (NDIS 5.1)) in Windows XP.
Zielplattform Universell
Header ndis.h (include Ndis.h)
Bibliothek Ndis.lib
IRQL PASSIVE_LEVEL
DDI-Complianceregeln Irql_Miniport_Driver_Function(ndis)

Weitere Informationen

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes