public static partial HRESULT VarFormat( IntPtr pvarIn, IntPtr pstrFormat, Ole32.VarFormatFirstDayOfWeek iFirstDay, Ole32.VarFormatFirstWeekOfYear iFirstWeek, VarFormatOptions dwFlags, ref IntPtr pbstrOut);
public static extern HRESULT VarFormat( IntPtr pvarIn, IntPtr pstrFormat, Ole32.VarFormatFirstDayOfWeek iFirstDay, Ole32.VarFormatFirstWeekOfYear iFirstWeek, VarFormatFlags dwFlags, ref IntPtr pbstrOut);
unsafe HRESULT Ole32.IVBFormat.Format( IntPtr vData, IntPtr bstrFormat, IntPtr lpBuffer, ushort cb, int lcid, Ole32.VarFormatFirstDayOfWeek sFirstDayOfWeek, Ole32.VarFormatFirstWeekOfYear sFirstWeekOfYear, ushort *rcb) { Debug.WriteLineIf(s_axHTraceSwitch.TraceVerbose, "in Format"); if (rcb is null) { return(HRESULT.E_INVALIDARG); } *rcb = 0; if (lpBuffer == IntPtr.Zero || cb < 2) { return(HRESULT.E_INVALIDARG); } IntPtr pbstr = IntPtr.Zero; HRESULT hr = Oleaut32.VarFormat( vData, bstrFormat, sFirstDayOfWeek, sFirstWeekOfYear, Oleaut32.VarFormatOptions.FORMAT_NOSUBSTITUTE, ref pbstr); try { ushort i = 0; if (pbstr != IntPtr.Zero) { short ch = 0; cb--; for (; i < cb && (ch = Marshal.ReadInt16(pbstr, i * 2)) != 0; i++) { Marshal.WriteInt16(lpBuffer, i * 2, ch); } } Marshal.WriteInt16(lpBuffer, i * 2, (short)0); *rcb = i; } finally { Oleaut32.SysFreeString(pbstr); } return(HRESULT.S_OK); }