/CLRSUPPORTLASTERROR (المحافظة الأخيرة رمز خطأ للاستدعاءات PInvoke)
/CLRSUPPORTLASTERROR، التي هو على بشكل افتراضي، يحتفظ رمز الخطأ الأخير استدعاء من خلال mechanهوm P/Invoke، والذي يسمح لك باستدعاء الدوال الأصلية في DLLS، من تعليمات برمجية المترجمة باستخدام الدالات**/clr**.
/CLRSUPPORTLASTERROR{:NO | SYSTEMDLL}
ملاحظات
مع الاحتفاظ بخطأ آخر تعليمات برمجية يعني انخفاض في الأداء. إذا كنت لا تريد تتطلب تأثير الأداء مع الاحتفاظ بخطأ آخر تعليمات برمجية، ارتباط مع /CLRSUPPORTLASTERROR:NO.
يمكنك تصغير تأثير الأداء بواسطة الارتباط مع /CLRSUPPORTLASTERROR:SYSTEMDLL، الذي يحافظ على فقط رمز الخطأ أخير للوظائف في النظام ملفات DLL. يتم تعريف ملف DLL لنظام كأحد الإجراءات التالية:
aclui.dll |
activeds.dll |
adptif.dll |
advapi32.dll |
asycfilt.dll |
authz.dll |
avicap32.dll |
avifil32.dll |
cabinet.dll |
clusapi.dll |
comctl32.dll |
comdlg32.dll |
comsvcs.dll |
credui.dll |
crypt32.dll |
cryptnet.dll |
cryptui.dll |
d3d8thk.dll |
dbgeng.dll |
dbghelp.dll |
dciman32.dll |
dnsapi.dll |
الملف dsprop.dll |
dsuiext.dll |
gdi32.dll |
glu32.dll |
hlink.dll |
icm32.dll |
imagehlp.dll |
imm32.dll |
iphlpapi.dll |
iprop.dll |
kernel32.dll |
ksuser.dll |
loadperf.dll |
lz32.dll |
mapi32.dll |
mgmtapi.dll |
mobsync.dll |
mpr.dll |
mprapi.dll |
mqrt.dll |
msacm32.dll |
mscms.dll |
msi.dll |
msimg32.dll |
msrating.dll |
mstask.dll |
msvfw32.dll |
mswsock.dll |
mtxex.dll |
nddeapi.dll |
netapi32.dll |
npptools.dll |
ntdsapi.dll التي تم |
ntdsbcli.dll |
ntmsapi.dll |
odbc32.dll |
odbcbcp.dll |
ole32.dll |
oleacc.dll |
oleaut32.dll |
oledlg.dll |
opengl32.dll |
pdh.dll |
powrprof.dll |
qosname.dll |
استعلام.dll |
rasapi32.dll |
rasdlg.dll |
rassapi.dll |
resutils.dll |
riched20.dll |
rpcns4.dll |
rpcrt4.dll |
rtm.dll |
rtutils.dll |
scarddlg.dll |
secur32.dll |
sensapi.dll |
setupapi.dll |
sfc.dll |
shell32.dll |
shfolder.dll |
shlwapi.dll |
sisbkup.dll |
snmpapi.dll |
srclient.dll |
sti.dll |
tapi32.dll |
نسبة استخدام الشبكة.dll |
url.dll |
urlmon.dll |
user32.dll |
userenv.dll |
usp10.dll |
uxtheme.dll |
vdmdbg.dll |
الإصدار.dll |
winfax.dll |
winhttp.dll |
wininet.dll |
winmm.dll |
winscard.dll |
wintrust.dll |
wldap32.dll |
wow32.dll |
ws2_32.dll |
wsnmp32.dll |
wsock32.dll |
wtsapi32.dll |
xolehlp.dll |
ملاحظة
مع الاحتفاظ بخطأ آخر هو غير معتمد للدالات غير مدار المستهلكة إلى تعليمات برمجية CLR في وحدة نمطية? نفسها.
- لمزيد من المعلومات، راجع /clr (التحويل البرمجي وقت تشغيل اللغة العامة).
إلى التعيين هذا خيار الرابط في بيئة تطوير Visual Studio
افتح مربع الحوار صفحات الخصائص للمشروع. للحصول على تفاصيل، راجع إعداد خصائص مشروع Visual C++.
انقر فوق المجلد الرابط.
انقر فوق من سطر الأوامر خاصية الصفحة.
قم بكتابة خيار في المربع خيارات إضافى.
إلى التعيين الرابط هذا خيار برمجياً
- انظر AdditionalOptions
مثال
نموذج التالي بتعريف ارتباط ديناميكي أصلي مع واحد تصدير دالة تقوم بتعديل الخطأ أخير.
// CLRSUPPORTLASTERROR_dll.cpp
// compile with: /LD
#include <windows.h>
#include <math.h>
#pragma unmanaged
__declspec(dllexport) double MySqrt(__int64 n) {
SetLastError(DWORD(-1));
return sqrt(double(n));
}
نموذج التالي يستهلك مكتبة الارتباط الديناميكي، demonstrating كيفية إلى استخدام /CLRSUPPORTLASTERROR.
// CLRSUPPORTLASTERROR_client.cpp
// compile with: /clr CLRSUPPORTLASTERROR_dll.lib /link /clrsupportlasterror:systemdll
// processor: x86
#include <windows.h>
#include <wininet.h>
#include <stdio.h>
#include <math.h>
#pragma comment(lib, "wininet.lib")
double MySqrt(__int64 n);
#pragma managed
int main() {
double d = 0.0;
__int64 n = 65;
HANDLE hGroup = NULL;
GROUPID groupID;
DWORD dwSet = 127, dwGet = 37;
SetLastError(dwSet);
d = MySqrt(n);
dwGet = GetLastError();
if (dwGet == DWORD(-1))
printf_s("GetLastError for application call succeeded (%d).\n",
dwGet);
else
printf_s("GetLastError for application call failed (%d).\n",
dwGet);
hGroup = FindFirstUrlCacheGroup(0, CACHEGROUP_SEARCH_ALL,
0, 0, &groupID, 0);
dwGet = GetLastError();
if (dwGet == 183)
printf_s("GetLastError for system call succeeded (%d).\n",
dwGet);
else
printf_s("GetLastError for system call failed (%d).\n",
dwGet);
}
GetLastError for application call failed (127). GetLastError for system call succeeded (183).