暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

Win32ApiSharedEmulation.h 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #pragma once
  2. #if IL2CPP_TARGET_WINRT
  3. #include "os/Win32/WindowsHeaders.h"
  4. #include <wrl.h>
  5. namespace il2cpp
  6. {
  7. namespace winrt
  8. {
  9. inline DWORD WIN32_FROM_HRESULT(HRESULT hr)
  10. {
  11. if ((hr & 0xFFFF0000) == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, 0))
  12. return HRESULT_CODE(hr);
  13. if (hr == S_OK)
  14. return HRESULT_CODE(hr);
  15. return ERROR_SUCCESS;
  16. }
  17. inline static BOOL CopyHStringToBuffer(Microsoft::WRL::Wrappers::HString& source, LPWSTR target, LPDWORD targetSize)
  18. {
  19. unsigned int sourceLength;
  20. auto sourceBuffer = source.GetRawBuffer(&sourceLength);
  21. if (sourceLength + 1 > *targetSize)
  22. {
  23. SetLastError(ERROR_BUFFER_OVERFLOW);
  24. *targetSize = sourceLength + 1;
  25. return FALSE;
  26. }
  27. *targetSize = sourceLength;
  28. if (target != nullptr)
  29. {
  30. memcpy(target, sourceBuffer, sourceLength * sizeof(wchar_t));
  31. target[sourceLength] = L'\0';
  32. return TRUE;
  33. }
  34. return FALSE;
  35. }
  36. }
  37. }
  38. #if IL2CPP_TARGET_WINRT
  39. extern "C"
  40. {
  41. DWORD WINAPI GetIfEntry(PMIB_IFROW pIfRow);
  42. } // extern "C"
  43. #endif // IL2CPP_TARGET_WINRT
  44. #endif