Qu'est-ce que le maréchalage ?
Le maréchalage est le processus de création d'un pont entre le code géré et le code non géré ; c'est l'homer qui transporte les messages de l'environnement géré vers l'environnement non géré et inversement. Il s'agit de l'un des principaux services offerts par le CLR (Common Language Runtime).
Étant donné que la plupart des types de l'environnement non géré n'ont pas d'équivalent dans l'environnement géré, vous devez créer des routines de conversion qui convertissent les types gérés en types non gérés et vice versa ; c'est le processus de marshaling.
Pour rappel, nous appelons le code .NET "géré" parce qu'il est contrôlé (géré) par le CLR. Les autres codes qui ne sont pas contrôlés par le CLR sont appelés non gérés.
Pourquoi la maréchaussée ?
Vous savez déjà que cette compatibilité n'existe pas entre les environnements gérés et non gérés. En d'autres termes, .NET ne contient pas les types HRESULT, DWORD et HANDLE qui existent dans le domaine du code non géré. Par conséquent, vous devez trouver un substitut .NET ou créer le vôtre si nécessaire. C'est ce qu'on appelle le marshaling.
Un exemple est le DWORD non géré ; il s'agit d'un entier 32 bits non signé, que nous pouvons donc convertir en System.UInt32 dans .NET. Par conséquent, System.UInt32 est un substitut du DWORD non géré. D'autre part, les types composés non gérés (structures, unions, etc.) n'ont pas d'homologues ou de substituts dans l'environnement géré. Ainsi, vous devrez créer vos propres types gérés (structures/classes) qui serviront de substituts aux types non gérés que vous utilisez.