Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
3.2 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. //
  4. // Copyright (c) 1996, 1997 Microsoft Corporation
  5. //
  6. //
  7. // Module Name:
  8. // test.c
  9. //
  10. // Abstract:
  11. //
  12. // This file is a test to find out if dual binding to NDIS and KS works
  13. //
  14. // Author:
  15. //
  16. // P Porzuczek
  17. //
  18. // Environment:
  19. //
  20. // Revision History:
  21. //
  22. //
  23. //////////////////////////////////////////////////////////////////////////////
  24. #include <memory.h>
  25. #include <ndis.h>
  26. #include <strsafe.h>
  27. #define MAX_STR_LEN 1024
  28. NDIS_PHYSICAL_ADDRESS HighestAcceptableMax = NDIS_PHYSICAL_ADDRESS_CONST(-1,-1);
  29. //////////////////////////////////////////////////////////////////////////////
  30. VOID
  31. FreeMemory (
  32. PVOID pvToFree,
  33. ULONG ulSize
  34. )
  35. //////////////////////////////////////////////////////////////////////////////
  36. {
  37. if (pvToFree != NULL)
  38. {
  39. NdisFreeMemory(pvToFree, ulSize, 0);
  40. }
  41. return;
  42. }
  43. //////////////////////////////////////////////////////////////////////////////
  44. NTSTATUS
  45. AllocateMemory (
  46. PVOID *ppvAllocated,
  47. ULONG ulcbSize
  48. )
  49. //////////////////////////////////////////////////////////////////////////////
  50. {
  51. PVOID pvBlock;
  52. NDIS_STATUS nsResult = NDIS_STATUS_SUCCESS;
  53. nsResult = NdisAllocateMemory (&pvBlock, ulcbSize, 0, HighestAcceptableMax);
  54. if (!pvBlock)
  55. {
  56. nsResult = NDIS_STATUS_RESOURCES;
  57. }
  58. if (nsResult != NDIS_STATUS_SUCCESS)
  59. {
  60. return nsResult;
  61. }
  62. NdisZeroMemory( pvBlock, ulcbSize);
  63. *ppvAllocated = pvBlock;
  64. return NDIS_STATUS_SUCCESS;
  65. }
  66. //////////////////////////////////////////////////////////////////////////////
  67. ULONG
  68. MyStrLen (
  69. PUCHAR p
  70. )
  71. //////////////////////////////////////////////////////////////////////////////
  72. {
  73. SIZE_T sizet = 0;
  74. if(StringCbLength(p,MAX_STR_LEN,&sizet)!=S_OK)
  75. return (0);
  76. return (ULONG)sizet;
  77. }
  78. //////////////////////////////////////////////////////////////////////////////
  79. VOID
  80. MyStrCat (
  81. PUCHAR pTarget,
  82. PUCHAR pSource
  83. )
  84. //////////////////////////////////////////////////////////////////////////////
  85. {
  86. PUCHAR p = pTarget + MyStrLen (pTarget);
  87. NdisMoveMemory (p, pSource, MyStrLen (pSource));
  88. return;
  89. }
  90. //////////////////////////////////////////////////////////////////////////////
  91. PUCHAR
  92. MyUlToA (
  93. ULONG dwValue,
  94. PUCHAR pszStr,
  95. ULONG dwRadix
  96. )
  97. //////////////////////////////////////////////////////////////////////////////
  98. {
  99. PUCHAR psz;
  100. char ch;
  101. for (psz = pszStr; dwValue != 0; dwValue/=dwRadix, psz++)
  102. {
  103. ch = (char)(dwValue%dwRadix);
  104. if (ch <= 9)
  105. {
  106. *psz = (char)(ch + '0');
  107. }
  108. else
  109. {
  110. *psz = (char)(ch - 10 + 'A');
  111. }
  112. }
  113. if (psz == pszStr)
  114. {
  115. pszStr[0] = '0';
  116. pszStr[1] = '\0';
  117. }
  118. else
  119. {
  120. PUCHAR psz2;
  121. *psz = '\0';
  122. for (psz2 = pszStr, psz--; psz2 < psz; psz2++, psz--)
  123. {
  124. ch = *psz2;
  125. *psz2 = *psz;
  126. *psz = ch;
  127. }
  128. }
  129. return pszStr;
  130. }