ReadIP.cpp
上传用户:bjlvip
上传日期:2010-02-08
资源大小:744k
文件大小:1k
源码类别:

Windows编程

开发平台:

Visual C++

  1. #define _WIN32_DCOM
  2. #include <windows.h>
  3. #include <iostream.h>
  4. #include <stdio.h>
  5. #include <io.h>
  6. #include <fcntl.h>
  7. #include "Componentcomponent.h"
  8. HRESULT HexStringToIP(char* output, REFIID riid, void** pObject)
  9. {
  10. int max = strlen(output) / 2;
  11. char* pointer = (char*)CoTaskMemAlloc(max);
  12. for(int count = 0; count < max; count++)
  13. {
  14. // 0 - 9 (48 - 57)     a - f (97 - 102)
  15. int a1 = output[count*2];
  16. if(a1 > 47 && a1 < 58)
  17. a1 = output[count*2] - 48;
  18. else if(a1 > 96 && a1 < 103)
  19. a1 = output[count*2] - 87;
  20. int a2 = output[(count*2)+1];
  21. if(a2 > 47 && a2 < 58)
  22. a2 = output[(count*2)+1] - 48;
  23. else if(a2 > 96 && a2 < 103)
  24. a2 = output[(count*2)+1] - 87;
  25. pointer[count] = a1 * 16 + a2;
  26. }
  27. HRESULT hr;
  28. IStream* pStream = 0;
  29. hr = CreateStreamOnHGlobal(pointer, TRUE, &pStream);
  30. hr = CoUnmarshalInterface(pStream, riid, pObject);
  31. pStream->Release();
  32. return hr;
  33. }
  34. void main()
  35. {
  36. CoInitialize(NULL);
  37. char output[1024];
  38. int fh = _open("c:\ip.txt", _O_TEXT|_O_RDONLY);
  39. int read = _read(fh, output, 1024);
  40. _close(fh);
  41. output[read] = 0;
  42. printf("%sn", output);
  43. ISum* pSum;
  44. HexStringToIP(output, IID_ISum, (void**)&pSum);
  45. int addition;
  46. pSum->Sum(4, 2, &addition);
  47. cout << "4 + 2 = " << addition << endl;
  48. pSum->Release();
  49. CoUninitialize();
  50. }