KsDeviceRegisterAdapterObject, fonction (ks.h)
La fonction KsDeviceRegisterAdapterObject inscrit un objet d’adaptateur DMA avec AVStream pour effectuer des diffusions/regroupements DMA sur l’appareil spécifié. Tous les pilotes compilés pour Win64 doivent utiliser IKsDeviceFunctions ::RegisterAdapterObjectEx à la place.
Syntaxe
void KsDeviceRegisterAdapterObject(
[in] PKSDEVICE Device,
[in] PADAPTER_OBJECT AdapterObject,
[in] ULONG MaxMappingsByteCount,
[in] ULONG MappingTableStride
);
Paramètres
[in] Device
Pointeur vers la structure KSDEVICE représentant l’appareil AVStream pour lequel inscrire un objet adaptateur.
[in] AdapterObject
Pointeur vers la structure DMA_ADAPTER retournée par IoGetDmaAdapter qui représente le contrôleur DMA.
[in] MaxMappingsByteCount
Ce paramètre spécifie le nombre maximal d’octets que l’appareil peut gérer pour un mappage unique. Permet à AVStream de diviser automatiquement des segments volumineux de mémoire physique contiguë en plusieurs éléments de diffusion/collecte pour les appareils qui imposent une limite de taille aux mappages individuels dans les transferts DMA. Il n’est pas garanti que les interruptions se produisent sur les limites de page.
[in] MappingTableStride
Ce paramètre spécifie le nombre d’octets requis par chaque entrée de la table de mappage. Ce doit être au moins sizeof (KSMAPPING) et peut être aussi volumineux que nécessaire.
Un espace supplémentaire peut être utilisé par le minidriver comme informations de contexte.
Valeur de retour
None
Remarques
Un minidriver qui appelle KsDeviceRegisterAdapterObject est responsable de l’acquisition préalable de l’objet adaptateur via IoGetDmaAdapter.
Notez également que si le minidriver spécifie l’indicateur KSPIN_FLAG_GENERATE_MAPPINGS pour n’importe quelle broche sur un filtre sur l’appareil, le minidriver doit appeler KsDeviceRegisterAdapterObject avant de traiter des données. Pour plus d’informations sur cet indicateur, consultez la page de référence pour KSPIN_DESCRIPTOR_EX. Consultez également AVStream DMA Services.
Si vous définissez MaxMappingByteCount sur une page physique, il n’est pas garanti que les mappages résident sur une seule page physique. En outre, comme indiqué dans la description du membre ci-dessus, la définition de MaxMappingsByteCount ne garantit pas que des interruptions se produisent sur les limites des pages. Si vous avez besoin de sauts sur les limites de page, envisagez de ne pas spécifier de limite sur les tailles de mappage ; au lieu de cela, décomposez manuellement les mappages de points/regroupements retournés en blocs alignés sur la page.
Consultez également Prise en charge de DMA dans les pilotes AVStream 64 bits.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | ks.h (inclure Ks.h) |
Bibliothèque | Ks.lib |
IRQL | PASSIVE_LEVEL |