IWDFDriver ::CreatePreallocatedWdfMemory, méthode (wudfddi.h)
[Avertissement : UMDF 2 est la dernière version de UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide de UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et il existe une prise en charge limitée de UMDF 1 sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2. Pour plus d’informations, consultez Bien démarrer avec UMDF.]
La méthode CreatePreallocatedWdfMemory crée un objet mémoire d’infrastructure pour la mémoire tampon spécifiée.
Syntaxe
HRESULT CreatePreallocatedWdfMemory(
[in] BYTE *pBuff,
[in] SIZE_T BufferSize,
[in, optional] IUnknown *pCallbackInterface,
[in, optional] IWDFObject *pParentObject,
[out] IWDFMemory **ppWdfMemory
);
Paramètres
[in] pBuff
Pointeur vers une mémoire tampon de données fournie par le pilote pour l’objet mémoire.
[in] BufferSize
Taille, en octets, des données qui pBuff pointe vers.
[in, optional] pCallbackInterface
Pointeur vers l’interface IUnknown utilisée par l’infrastructure pour déterminer les fonctions de rappel d’événements liées à l’objet auxquelles le pilote s’abonne sur l’objet mémoire nouvellement créé. Ce paramètre est facultatif. Le pilote peut passer NULL si le pilote n’a pas besoin de notification. L’interface IUnknown est utilisée pour le nettoyage et la suppression d’objets. Si le pilote transmet un pointeur valide, l’infrastructure appelle QueryInterface sur l’interface IUnknown pour l’interface IObjectCleanup. Si l’infrastructure obtient l’interface IObjectCleanup du pilote, l’infrastructure peut ensuite appeler la méthode IObjectCleanup ::OnCleanup du pilote pour avertir le pilote que l’objet mémoire est nettoyé.
[in, optional] pParentObject
Pointeur vers l’interface IWDFObject pour l’objet parent de l’objet mémoire créé. Si NULL, l’objet pilote devient le parent par défaut.
[out] ppWdfMemory
Pointeur vers une mémoire tampon qui reçoit un pointeur vers l’interface IWDFMemory pour l’objet mémoire WDF nouvellement créé.
Valeur de retour
CreatePreallocatedWdfMemory retourne S_OK si l’opération réussit. Sinon, cette méthode retourne l’un des codes d’erreur définis dans Winerror.h.
Remarques
La méthode CreatePreallocatedWdfMemory crée un objet mémoire d’infrastructure pour une mémoire tampon que le pilote a précédemment allouée ou obtenue.
Un pilote UMDF peut appeler CreatePreallocatedWdfMemory s’il doit créer un objet mémoire qui représente une mémoire tampon préexistante. Par exemple, le pilote peut recevoir une structure définie par le pilote dans une mémoire tampon pour une requête d’E/S qui contient un code de contrôle d’E/S interne. Le pilote peut appeler CreatePreallocatedWdfMemory pour créer un objet mémoire afin que le pilote puisse passer la structure à une cible d’E/S.
Après qu’un pilote UMDF appelle CreatePreallocatedWdfMemory, le pilote peut appeler IWDFMemory ::SetBuffer pour affecter une mémoire tampon différente à l’objet mémoire qui CreatePreallocatedWdfMemory créé.
Lorsque l’objet mémoire de l’infrastructure qui CreatePreallocatedWdfMemory créé est supprimé, l’infrastructure ne désalloue pas la mémoire tampon préexistante. De même, un appel à IWDFMemory ::SetBuffer ne désalloue pas la mémoire tampon précédemment affectée.
Exemples
L’exemple de code suivant montre comment créer un objet mémoire pour une mémoire tampon.
//
// Allocate a request.
hr = wdfDevice->CreateRequest(NULL, NULL, &request);
// Allocate a buffer and wrap it in a memory object.
// Make the memory object a child of the request.
// When the request object is deleted, the memory object
// is also deleted.
if (SUCCEEDED(hr))
{
buffer = new BYTE[m_HidDescriptor->wReportLength];
if (buffer == NULL)
{
hr = E_OUTOFMEMORY;
}
}
if (SUCCEEDED(hr))
{
CComPtr<IWDFDriver> driver;
wdfDevice->GetDriver(&driver);
hr = driver->CreatePreallocatedWdfMemory(
buffer,
m_HidDescriptor->wReportLength,
NULL,
request,
&memory
);
}
Exigences
Exigence | Valeur |
---|---|
fin du support | Indisponible dans UMDF 2.0 et versions ultérieures. |
plateforme cible | Bureau |
version minimale de UMDF | 1.5 |
d’en-tête | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |