Comment puis-je obtenir la valeur de la DLL suivante? offreg.dll.ERROR_MORE_DATA --- PVOID et C# --- types non gérés
Dans mon code ci-dessous, j'ai ouvert avec succès la ruche, la clé et maintenant j'essaye d'obtenir la valeur de la clé et je continue à courir dans l'erreur ERROR_MORE_DATA (234).
Voici le C++ .dll:
DWORD
ORAPI
ORGetValue (
__in ORHKEY Handle,
__in_opt PCWSTR lpSubKey,
__in_opt PCWSTR lpValue,
__out_opt PDWORD pdwType,
__out_bcount_opt(*pcbData) PVOID pvData,
__inout_opt PDWORD pcbData
);
Voici mon code C#:
[DllImport("offreg.dll", CharSet = CharSet.Auto, EntryPoint = "ORGetValue", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
public static extern uint ORGetValue(IntPtr Handle, string lpSubKey, string lpValue, out uint pdwType, out StringBuilder pvData, out uint pcbData);
IntPtr myHive;
IntPtr myKey;
StringBuilder myValue = new StringBuilder("", 256);
uint pdwtype;
uint pcbdata;
uint ret3 = ORGetValue(myKey, "", "DefaultUserName", out pdwtype, out myValue, out pcbdata);
Donc, la question semble être autour PVOID pvData Je ne peux pas semblent avoir le bon type, ou la bonne taille de tampon. Toujours avec l'erreur 234. REMARQUE: Lors de l'exécution de cette commande pcbdata = 28 ... donc 256 devrait être plus que suffisant.
Toute aide serait grandement appréciée.
Comme indiqué ci-dessus, je l'ai essayé constructeur string ... string ... IntPtr etc ... Aucun qui ont pu gérer la pvData de ...
Merci.
Et c'est une question de 10 mois sur la première page parce que quelqu'un a décidé de modifier 14 il y a quelques minutes. – shf301