Moin Zusammen,<br>
<br>
bei dem Versuch über RegEnumValue Werte auszulesen schmiert mir das Programm immer mit o.g. Exception ab.<br>
<br>
Deklaration der Funktion:<br>
<pre>
[DllImport("advapi32.dll",CharSet = CharSet.Auto)]
public static extern int
RegEnumValue(
int hKey,
int dwIndex,
[MarshalAs(UnmanagedType.LPTStr)]
StringBuilder lpValueName,
ref int lpcValueName,
int lpReserved,
ref TcsRegDataTypes lpType,
ref byte[] lpData,
ref int lpcbData
);
</pre>
Aufruf:<br>
<pre>
sbDummy = new StringBuilder(iValueMaxLenName);
iWork = TcsRegInfo.RegEnumValue(iRegHandle,i,sbDummy,ref iValueMaxLenName,0,ref rdtWork,ref abBuffer,ref iMaxValueLen);
</pre>
<br>
Folgendes Voraussetzungen bestehen:<br>
hKey enthält das Handle auf den geöffneten Key<br>
dwIndex enthält 0<br>
lpValueName enthält lpcValueName Blanks<br>
lpcValueName enthält die korrekte Länge + 1 (Reservere)<br>
lpReserved ist 0<br>
lpType (TcsRegDataTypes ist ein eigner enum Typ, mit int passiert das gleiche) ist mit $FFFF initialisiert.<br>
lpData ist mit new byte[lpcData] initialisiert<br>
lpcData enthält einen korrekten Wert.<br>
<br>
Schau ich mir die Inhalte der Variablen nach dem Auftreten der Exception an, so enthalten sie offensichtlich Werte, die von der Funktion zurückgeliefert wurden. lpType enthält z.B. den Wert für REG_EXPAND, wurde also gefüllt.<br>
iWork wird vor dem Aufruf auf -1 initialisiert und bleibt unverändert.<br>
<br>
Hat irgend Jemand eine Idee, woran's liegt?<br>
<br>
Ciao<br>
Chris
<br>
bei dem Versuch über RegEnumValue Werte auszulesen schmiert mir das Programm immer mit o.g. Exception ab.<br>
<br>
Deklaration der Funktion:<br>
<pre>
[DllImport("advapi32.dll",CharSet = CharSet.Auto)]
public static extern int
RegEnumValue(
int hKey,
int dwIndex,
[MarshalAs(UnmanagedType.LPTStr)]
StringBuilder lpValueName,
ref int lpcValueName,
int lpReserved,
ref TcsRegDataTypes lpType,
ref byte[] lpData,
ref int lpcbData
);
</pre>
Aufruf:<br>
<pre>
sbDummy = new StringBuilder(iValueMaxLenName);
iWork = TcsRegInfo.RegEnumValue(iRegHandle,i,sbDummy,ref iValueMaxLenName,0,ref rdtWork,ref abBuffer,ref iMaxValueLen);
</pre>
<br>
Folgendes Voraussetzungen bestehen:<br>
hKey enthält das Handle auf den geöffneten Key<br>
dwIndex enthält 0<br>
lpValueName enthält lpcValueName Blanks<br>
lpcValueName enthält die korrekte Länge + 1 (Reservere)<br>
lpReserved ist 0<br>
lpType (TcsRegDataTypes ist ein eigner enum Typ, mit int passiert das gleiche) ist mit $FFFF initialisiert.<br>
lpData ist mit new byte[lpcData] initialisiert<br>
lpcData enthält einen korrekten Wert.<br>
<br>
Schau ich mir die Inhalte der Variablen nach dem Auftreten der Exception an, so enthalten sie offensichtlich Werte, die von der Funktion zurückgeliefert wurden. lpType enthält z.B. den Wert für REG_EXPAND, wurde also gefüllt.<br>
iWork wird vor dem Aufruf auf -1 initialisiert und bleibt unverändert.<br>
<br>
Hat irgend Jemand eine Idee, woran's liegt?<br>
<br>
Ciao<br>
Chris
Comment