IWDFDriver ::CreateWdfMemory, 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 CreateWdfMemory crée un objet mémoire d’infrastructure et alloue, pour l’objet mémoire, une mémoire tampon de données de la taille différente de zéro spécifiée.
Syntaxe
HRESULT CreateWdfMemory(
[in] SIZE_T BufferSize,
[in, optional] IUnknown *pCallbackInterface,
[in, optional] IWDFObject *pParentObject,
[out] IWDFMemory **ppWdfMemory
);
Paramètres
[in] BufferSize
Taille non spécifiée, en octets, des données pour la mémoire tampon de mémoire WDF nouvellement créée.
[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
CreateWdfMemory 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 CreateWdfMemory alloue une mémoire tampon de la taille spécifiée par le paramètre BufferSize et crée un objet mémoire de framework qui représente la mémoire tampon.
Si NULL est spécifié dans le paramètre pParentObject, l’objet de pilote devient l’objet parent par défaut de l’objet mémoire nouvellement créé. Si un pilote UMDF crée un objet mémoire que le pilote utilise avec un objet de périphérique spécifique, un objet de requête ou un autre objet framework, le pilote doit définir l’objet parent de l’objet mémoire de manière appropriée. Lorsque l’objet parent est supprimé, l’objet mémoire et sa mémoire tampon sont supprimés.
Un pilote UMDF peut également supprimer un objet mémoire et sa mémoire tampon en appelant IWDFObject ::D eleteWdfObject.
Un pilote UMDF ne peut pas créer un objet mémoire avec une mémoire tampon de taille spécifiée zéro. Si un pilote doit utiliser une mémoire tampon de taille spécifiée zéro, le pilote doit utiliser un objet NULL mémoire à la place. Par exemple, si le pilote doit utiliser une mémoire tampon de taille spécifiée zéro dans une demande de lecture, le pilote doit passer NULL au paramètre pOutputMemory dans un appel à la méthode IWDFIoTarget ::FormatRequestForRead.
Exemples
L’exemple de code suivant montre comment créer un objet mémoire qui peut contenir des informations lues à partir d’un point de terminaison USB.
HRESULT
CUmdfHidDevice::PrepareReader(
VOID
)
{
CComPtr<IWDFDevice> wdfDevice;
CComPtr<IWDFDriver> wdfDriver;
CComPtr<IWDFIoRequest> wdfRequest;
HRESULT hr;
GetWdfDevice(&wdfDevice);
wdfDevice->GetDriver(&wdfDriver);
// Open the interrupt pipe.
hr = m_HidInterface->RetrieveUsbPipeObject(
USB_HID_INTERRUPT_PIPE_INDEX,
&m_InterruptPipe
);
// Allocate a memory object to hold information that
// is read from the interrupt pipe.
// This memory object will be reused.
if (SUCCEEDED(hr))
{
hr = wdfDriver->CreateWdfMemory(m_ReadBufferSize,
NULL,
wdfDevice,
&m_ReadMemory);
}
return hr;
}
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 |