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 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. |
|
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 konnte die Systemressourcen, die für die Unterstützung von DMA-Vorgängen durch diesen Miniporttreiber erforderlich sind, nicht zuordnen. |
|
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) |