[DllImport(Interop.Libraries.OleAut32)]
internal static extern void SysFreeString(IntPtr bstr);
-#if FEATURE_COMINTEROP
[DllImport(Interop.Libraries.OleAut32)]
internal static extern IntPtr SysAllocStringByteLen(byte[] str, uint len); // BSTR
[DllImport(Interop.Libraries.OleAut32)]
- internal static extern uint SysStringByteLen(IntPtr bstr);
-
-#endif
+ internal static extern uint SysStringByteLen(IntPtr bstr); // BSTR
[DllImport(Interop.Libraries.Kernel32, SetLastError = true)]
internal static extern unsafe int WriteFile(SafeFileHandle handle, byte* bytes, int numBytesToWrite, out int numBytesWritten, IntPtr mustBeZero);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
internal extern bool IsAscii();
-#if FEATURE_COMINTEROP
// Set extra byte for odd-sized strings that came from interop as BSTR.
[MethodImplAttribute(MethodImplOptions.InternalCall)]
internal extern void SetTrailByte(byte data);
// Try to retrieve the extra byte - returns false if not present.
[MethodImplAttribute(MethodImplOptions.InternalCall)]
internal extern bool TryGetTrailByte(out byte data);
-#endif
public static string Intern(string str)
{
}
}
-#if FEATURE_COMINTEROP
-
internal static class BSTRMarshaler
{
internal static unsafe IntPtr ConvertToNative(string strManaged, IntPtr pNativeBuffer)
}
} // class BSTRMarshaler
-#endif // FEATURE_COMINTEROP
-
-
internal static class VBByValStrMarshaler
{
internal static unsafe IntPtr ConvertToNative(string strManaged, bool fBestFit, bool fThrowOnUnmappableChar, ref int cch)
FCIMPLEND
-#ifdef FEATURE_COMINTEROP
-
FCIMPL2(FC_BOOL_RET, COMString::FCTryGetTrailByte, StringObject* thisRefUNSAFE, UINT8 *pbData)
{
FCALL_CONTRACT;
}
FCIMPLEND
-#endif // FEATURE_COMINTEROP
-
// Revert to command line compilation flags
#if defined(_MSC_VER) && defined(_TARGET_X86_)
#pragma optimize ("", on)
//
// Interop
//
-#ifdef FEATURE_COMINTEROP
static FCDECL2(FC_BOOL_RET, FCTryGetTrailByte, StringObject* thisRefUNSAFE, UINT8 *pbData);
static FCDECL2(VOID, FCSetTrailByte, StringObject* thisRefUNSAFE, UINT8 bData);
-#endif // FEATURE_COMINTEROP
};
// Revert to command line compilation flags
ResetEvent
SetEnvironmentVariableW
SetEvent
+SysAllocStringByteLen
SysAllocStringLen
SysFreeString
+SysStringByteLen
SysStringLen
VirtualAlloc
VirtualFree
FCIntrinsic("get_Length", COMString::Length, CORINFO_INTRINSIC_StringLength)
FCIntrinsic("get_Chars", COMString::GetCharAt, CORINFO_INTRINSIC_StringGetChar)
FCFuncElement("IsAscii", COMString::IsAscii)
-#ifdef FEATURE_COMINTEROP
FCFuncElement("SetTrailByte", COMString::FCSetTrailByte)
FCFuncElement("TryGetTrailByte", COMString::FCTryGetTrailByte)
-#endif // FEATURE_COMINTEROP
FCFuncEnd()
FCFuncStart(gValueTypeFuncs)
// static void ClearNative(IntPtr pNative);
pslILEmit->EmitCALL(METHOD__VBBYVALSTRMARSHALER__CLEAR_NATIVE, 1, 0);
}
+#endif // FEATURE_COMINTEROP
LocalDesc ILBSTRMarshaler::GetManagedType()
{
EmitStoreManagedValue(pslILEmit);
}
-
+#ifdef FEATURE_COMINTEROP
LocalDesc ILAnsiBSTRMarshaler::GetNativeType()
{
LIMITED_METHOD_CONTRACT;
virtual void EmitConvertContentsNativeToCLR(ILCodeStream* pslILEmit);
};
-#ifdef FEATURE_COMINTEROP
class ILBSTRMarshaler : public ILOptimizedAllocMarshaler
{
public:
virtual void EmitConvertContentsNativeToCLR(ILCodeStream* pslILEmit);
};
-
+#ifdef FEATURE_COMINTEROP
class ILAnsiBSTRMarshaler : public ILMarshaler
{
public:
break;
}
-#ifdef FEATURE_COMINTEROP
case NATIVE_TYPE_BSTR:
if (builder)
{
}
m_type = MARSHAL_TYPE_BSTR;
break;
-
+#ifdef FEATURE_COMINTEROP
case NATIVE_TYPE_ANSIBSTR:
if (builder)
{
XXXXX(NATIVE_TYPE_IUNKNOWN)
-#ifdef FEATURE_COMINTEROP
XXXXX(NATIVE_TYPE_BSTR)
+#ifdef FEATURE_COMINTEROP
XXXXX(NATIVE_TYPE_TBSTR)
XXXXX(NATIVE_TYPE_ANSIBSTR)
XXXXX(NATIVE_TYPE_HSTRING)
case MARSHAL_TYPE_DATE:
strRetVal = W("DATE");
break;
-#ifdef FEATURE_COMINTEROP
case MARSHAL_TYPE_BSTR:
strRetVal = W("BSTR");
break;
-#endif // FEATURE_COMINTEROP
case MARSHAL_TYPE_LPWSTR:
strRetVal = W("LPWSTR");
break;
m_vtElement = static_cast<VARTYPE>(isAnsi ? VT_LPSTR : VT_LPWSTR);
}
break;
-#ifdef FEATURE_COMINTEROP
case NATIVE_TYPE_BSTR:
m_vtElement = VT_BSTR;
break;
-#endif // FEATURE_COMINTEROP
case NATIVE_TYPE_LPSTR:
m_vtElement = VT_LPSTR;
break;
DEFINE_METHOD(WSTRBUFFERMARSHALER, CONVERT_TO_MANAGED, ConvertToManaged, SM_IntPtr_RetStr)
DEFINE_METHOD(WSTRBUFFERMARSHALER, CLEAR_NATIVE, ClearNative, SM_IntPtr_RetVoid)
-#ifdef FEATURE_COMINTEROP
DEFINE_CLASS(BSTRMARSHALER, StubHelpers, BSTRMarshaler)
DEFINE_METHOD(BSTRMARSHALER, CONVERT_TO_NATIVE, ConvertToNative, SM_Str_IntPtr_RetIntPtr)
DEFINE_METHOD(BSTRMARSHALER, CONVERT_TO_MANAGED, ConvertToManaged, SM_IntPtr_RetStr)
DEFINE_METHOD(BSTRMARSHALER, CLEAR_NATIVE, ClearNative, SM_IntPtr_RetVoid)
+#ifdef FEATURE_COMINTEROP
DEFINE_CLASS(ANSIBSTRMARSHALER, StubHelpers, AnsiBSTRMarshaler)
DEFINE_METHOD(ANSIBSTRMARSHALER, CONVERT_TO_NATIVE, ConvertToNative, SM_Int_Str_RetIntPtr)
DEFINE_METHOD(ANSIBSTRMARSHALER, CONVERT_TO_MANAGED, ConvertToManaged, SM_IntPtr_RetStr)
DEFINE_MARSHALER_TYPE(MARSHAL_TYPE_LPWSTR, WSTRMarshaler, false)
DEFINE_MARSHALER_TYPE(MARSHAL_TYPE_LPSTR, CSTRMarshaler, false)
DEFINE_MARSHALER_TYPE(MARSHAL_TYPE_LPUTF8STR, CUTF8Marshaler, false)
-#ifdef FEATURE_COMINTEROP
DEFINE_MARSHALER_TYPE(MARSHAL_TYPE_BSTR, BSTRMarshaler, false)
+#ifdef FEATURE_COMINTEROP
DEFINE_MARSHALER_TYPE(MARSHAL_TYPE_ANSIBSTR, AnsiBSTRMarshaler, false)
DEFINE_MARSHALER_TYPE(MARSHAL_TYPE_HSTRING, HSTRINGMarshaler, true)
DEFINE_MARSHALER_TYPE(MARSHAL_TYPE_DATETIME, DateTimeMarshaler, true)