Source code of Windows XP (NT5)
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.

153 lines
2.9 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. NDIS_PHYSICAL_ADDRESS HighestAcceptableMax = NDIS_PHYSICAL_ADDRESS_CONST(-1,-1);
  27. //////////////////////////////////////////////////////////////////////////////
  28. VOID
  29. FreeMemory (
  30. PVOID pvToFree,
  31. ULONG ulSize
  32. )
  33. //////////////////////////////////////////////////////////////////////////////
  34. {
  35. if (pvToFree != NULL)
  36. {
  37. NdisFreeMemory(pvToFree, ulSize, 0);
  38. }
  39. return;
  40. }
  41. //////////////////////////////////////////////////////////////////////////////
  42. NTSTATUS
  43. AllocateMemory (
  44. PVOID *ppvAllocated,
  45. ULONG ulcbSize
  46. )
  47. //////////////////////////////////////////////////////////////////////////////
  48. {
  49. PVOID pvBlock;
  50. NDIS_STATUS nsResult = NDIS_STATUS_SUCCESS;
  51. nsResult = NdisAllocateMemory (&pvBlock, ulcbSize, 0, HighestAcceptableMax);
  52. if (!pvBlock)
  53. {
  54. nsResult = NDIS_STATUS_RESOURCES;
  55. }
  56. if (nsResult != NDIS_STATUS_SUCCESS)
  57. {
  58. return nsResult;
  59. }
  60. NdisZeroMemory( pvBlock, ulcbSize);
  61. *ppvAllocated = pvBlock;
  62. return NDIS_STATUS_SUCCESS;
  63. }
  64. //////////////////////////////////////////////////////////////////////////////
  65. ULONG
  66. MyStrLen (
  67. PUCHAR p
  68. )
  69. //////////////////////////////////////////////////////////////////////////////
  70. {
  71. ULONG ul = 0;
  72. while (*p++) ul++;
  73. return ul;
  74. }
  75. //////////////////////////////////////////////////////////////////////////////
  76. VOID
  77. MyStrCat (
  78. PUCHAR pTarget,
  79. PUCHAR pSource
  80. )
  81. //////////////////////////////////////////////////////////////////////////////
  82. {
  83. PUCHAR p = pTarget + MyStrLen (pTarget);
  84. NdisMoveMemory (p, pSource, MyStrLen (pSource));
  85. return;
  86. }
  87. //////////////////////////////////////////////////////////////////////////////
  88. PUCHAR
  89. MyUlToA (
  90. ULONG dwValue,
  91. PUCHAR pszStr,
  92. ULONG dwRadix
  93. )
  94. //////////////////////////////////////////////////////////////////////////////
  95. {
  96. PUCHAR psz;
  97. char ch;
  98. for (psz = pszStr; dwValue != 0; dwValue/=dwRadix, psz++)
  99. {
  100. ch = (char)(dwValue%dwRadix);
  101. if (ch <= 9)
  102. {
  103. *psz = (char)(ch + '0');
  104. }
  105. else
  106. {
  107. *psz = (char)(ch - 10 + 'A');
  108. }
  109. }
  110. if (psz == pszStr)
  111. {
  112. pszStr[0] = '0';
  113. pszStr[1] = '\0';
  114. }
  115. else
  116. {
  117. PUCHAR psz2;
  118. *psz = '\0';
  119. for (psz2 = pszStr, psz--; psz2 < psz; psz2++, psz--)
  120. {
  121. ch = *psz2;
  122. *psz2 = *psz;
  123. *psz = ch;
  124. }
  125. }
  126. return pszStr;
  127. }