Fonction ZwCreateResourceManager (wdm.h)

La routine ZwCreateResourceManager crée un objet Resource Manager.

Syntaxe

NTSYSCALLAPI NTSTATUS ZwCreateResourceManager(
  [out]          PHANDLE            ResourceManagerHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in]           HANDLE             TmHandle,
  [in, optional] LPGUID             ResourceManagerGuid,
  [in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional] ULONG              CreateOptions,
  [in, optional] PUNICODE_STRING    Description
);

Paramètres

[out] ResourceManagerHandle

Pointeur vers une variable allouée par l’appelant qui reçoit un handle vers le nouvel objet Resource Manager si l’appel à ZwCreateResourceManager réussit.

[in] DesiredAccess

Valeur ACCESS_MASK qui spécifie l’accès demandé de l’appelant à l’objet Resource Manager. En plus des droits d’accès définis pour tous les types d’objets (voir ACCESS_MASK), l’appelant peut spécifier l’un des indicateurs de droit d’accès suivants pour les objets Resource Manager :

indicateur ACCESS_MASK Permet à l’appelant de
RESOURCEMANAGER_ENLIST Inscrivez-vous dans les transactions (voir ZwCreateEnlistment).
RESOURCEMANAGER_GET_NOTIFICATION Recevez des notifications sur les transactions associées à ce gestionnaire de ressources (voir ZwGetNotificationResourceManager).
RESOURCEMANAGER_REGISTER_PROTOCOL Non utilisé.
RESOURCEMANAGER_QUERY_INFORMATION Interrogez des informations sur le gestionnaire de ressources (consultez ZwQueryInformationResourceManager).
RESOURCEMANAGER_SET_INFORMATION Non utilisé.
RESOURCEMANAGER_RECOVER Récupérez le gestionnaire de ressources (voir ZwRecoverResourceManager).
RESOURCEMANAGER_COMPLETE_PROPAGATION Non utilisé.
 

Vous pouvez également spécifier un ou plusieurs des indicateurs de ACCESS_MASK génériques suivants. (Les indicateurs STANDARD_RIGHTS_Xxx sont des valeurs système prédéfinies utilisées pour appliquer la sécurité sur les objets système.) Vous pouvez également combiner ces indicateurs génériques avec des indicateurs supplémentaires du tableau précédent. Le tableau suivant montre comment les droits d’accès génériques correspondent à des droits d’accès spécifiques.

Droit d’accès générique Ensemble de droits d’accès spécifiques
RESOURCEMANAGER_GENERIC_READ STANDARD_RIGHTS_READ, RESOURCEMANAGER_QUERY_INFORMATION et SYNCHRONIZE
RESOURCEMANAGER_GENERIC_WRITE STANDARD_RIGHTS_WRITE, RESOURCEMANAGER_SET_INFORMATION, RESOURCEMANAGER_RECOVER, RESOURCEMANAGER_ENLIST, RESOURCEMANAGER_GET_NOTIFICATION, RESOURCEMANAGER_REGISTER_PROTOCOL, RESOURCEMANAGER_COMPLETE_PROPAGATION et SYNCHRONIZE
RESOURCEMANAGER_GENERIC_EXECUTE STANDARD_RIGHTS_EXECUTE, RESOURCEMANAGER_RECOVER, RESOURCEMANAGER_ENLIST, RESOURCEMANAGER_GET_NOTIFICATION, RESOURCEMANAGER_COMPLETE_PROPAGATION et SYNCHRONIZE
RESOURCEMANAGER_ALL_ACCESS STANDARD_RIGHTS_REQUIRED, RESOURCEMANAGER_GENERIC_READ, RESOURCEMANAGER_GENERIC_WRITE et RESOURCEMANAGER_GENERIC_EXECUTE

[in] TmHandle

Handle d’un objet de gestionnaire de transactions qui a été obtenu par un précédent à ZwCreateTransactionManager ou ZwOpenTransactionManager.

[in, optional] ResourceManagerGuid

Pointeur vers un GUID que KTM utilisera pour identifier le gestionnaire de ressources. Si ce pointeur a la valeur NULL, KTM génère un GUID.

[in, optional] ObjectAttributes

Pointeur vers une structure OBJECT_ATTRIBUTES qui spécifie le nom de l’objet et d’autres attributs. Utilisez la routine InitializeObjectAttributes pour initialiser cette structure. Si l’appelant n’est pas en cours d’exécution dans un contexte de thread système, il doit définir l’attribut OBJ_KERNEL_HANDLE lorsqu’il appelle InitializeObjectAttributes. Ce paramètre est facultatif et peut être NULL.

[in, optional] CreateOptions

Indicateurs de création d’objets facultatifs. Le tableau suivant contient les indicateurs disponibles, qui sont définis dans Ktmtypes.h.

Indicateur CreateOptions Signification
RESOURCE_MANAGER_COMMUNICATION À usage interne uniquement.
RESOURCE_MANAGER_VOLATILE L’appelant gère les ressources volatiles. Il ne sera pas persistant et n’effectuera pas de récupération.
 

Ce paramètre est facultatif et peut être égal à zéro.

[in, optional] Description

Pointeur vers une structure de UNICODE_STRING fournie par l’appelant qui contient une chaîne NULL terminée. La chaîne fournit une description du gestionnaire de ressources. KTM stocke une copie de la chaîne et inclut la chaîne dans les messages qu’il écrit dans le flux de journal. La longueur maximale de chaîne est MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH. Ce paramètre est facultatif et peut être NULL.

Valeur retournée

ZwCreateResourceManager retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette routine peut retourner l’une des valeurs suivantes :

Code de retour Description
STATUS_OBJECT_TYPE_MISMATCH
Le handle spécifié par TmHandle n’est pas un handle pour un objet de transaction.
STATUS_INVALID_HANDLE
Le handle spécifié par TmHandle n’est pas valide.
STATUS_ACCESS_DENIED
L’appelant n’a pas l’accès approprié à l’objet gestionnaire de transactions spécifié.
STATUS_TRANSACTION_OBJECT_EXPIRED
Le handle spécifié par TmHandle est fermé.
STATUS_INVALID_PARAMETER
La valeur du paramètre CreateOptions n’est pas valide ou la chaîne du paramètre Description est trop longue.
STATUS_TM_VOLATILE
Le paramètre CreateOptions ne spécifie pas RESOURCE_MANAGER_VOLATILE, mais le gestionnaire de transactions spécifié par TmHandle est volatile.
STATUS_OBJECT_NAME_COLLISION
Le GUID spécifié par ResourceManagerGuid existe déjà.
STATUS_ACCESS_DENIED
La valeur du paramètre DesiredAccess n’est pas valide.
 

La routine peut retourner d’autres valeurs NTSTATUS.

Remarques

Un gestionnaire de ressources qui appelle ZwCreateResourceManager doit finalement appeler ZwClose pour fermer le handle d’objet.

Pour plus d’informations sur ZwCreateResourceManager, consultez Création d’un Resource Manager.

Pour les appels à partir de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment dans la façon dont elles gèrent et interprètent les paramètres d’entrée. Pour plus d’informations sur la relation entre les versions NtXxx et ZwXxx d’une routine, consultez Utilisation des versions Nt et Zw des routines des services système natifs.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et les versions ultérieures du système d’exploitation.
Plateforme cible Universal
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Voir aussi

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

UNICODE_STRING

ZwClose

ZwCreateEnlistment

ZwCreateTransactionManager

ZwGetNotificationResourceManager

ZwOpenResourceManager

ZwOpenTransactionManager

ZwQueryInformationResourceManager

ZwRecoverResourceManager