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.

697 lines
22 KiB

  1. /*++
  2. Copyright (c) 1990-1995 Microsoft Corporation
  3. Module Name:
  4. bus.c
  5. Abstract:
  6. NDIS wrapper functions to handle specific buses
  7. Author:
  8. Adam Barr (adamba) 11-Jul-1990
  9. Environment:
  10. Kernel mode, FSD
  11. Revision History:
  12. 26-Feb-1991 JohnsonA Added Debugging Code
  13. 10-Jul-1991 JohnsonA Implement revised Ndis Specs
  14. 01-Jun-1995 JameelH Re-organization/optimization
  15. --*/
  16. #include <precomp.h>
  17. #pragma hdrstop
  18. //
  19. // Define the module number for debug code.
  20. //
  21. #define MODULE_NUMBER MODULE_BUS
  22. VOID
  23. NdisReadEisaSlotInformation(
  24. OUT PNDIS_STATUS Status,
  25. IN NDIS_HANDLE WrapperConfigurationContext,
  26. OUT PUINT SlotNumber,
  27. OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData
  28. )
  29. /*++
  30. Routine Description:
  31. This routine reads the EISA data from the slot given.
  32. Arguments:
  33. Status - Status of request to be returned to the user.
  34. WrapperConfigurationContext - Context passed to MacAddAdapter.
  35. SlotNumber - the EISA Slot where the card is at.
  36. EisaData - pointer to a buffer where the EISA configuration is to be returned.
  37. Return Value:
  38. None.
  39. --*/
  40. {
  41. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  42. ("==>NdisReadEisaSlotInformation: WrapperConfigurationContext %p\n", WrapperConfigurationContext));
  43. #if !DBG
  44. UNREFERENCED_PARAMETER(WrapperConfigurationContext);
  45. #endif
  46. UNREFERENCED_PARAMETER(SlotNumber);
  47. UNREFERENCED_PARAMETER(EisaData);
  48. *Status = NDIS_STATUS_NOT_SUPPORTED;
  49. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  50. ("<==NdisReadEisaSlotInformation: WrapperConfigurationContext %p, Status %lx\n", WrapperConfigurationContext, *Status));
  51. return;
  52. }
  53. VOID
  54. NdisReadEisaSlotInformationEx(
  55. OUT PNDIS_STATUS Status,
  56. IN NDIS_HANDLE WrapperConfigurationContext,
  57. OUT PUINT SlotNumber,
  58. OUT PNDIS_EISA_FUNCTION_INFORMATION *EisaData,
  59. OUT PUINT NumberOfFunctions
  60. )
  61. /*++
  62. Routine Description:
  63. This routine reads the EISA data from the slot given.
  64. Arguments:
  65. Status - Status of request to be returned to the user.
  66. WrapperConfigurationContext - Context passed to MacAddAdapter.
  67. SlotNumber - the EISA Slot where the card is at.
  68. EisaData - pointer to a buffer where the EISA configuration is to be returned.
  69. NumberOfFunctions - Returns the number of function structures in the EisaData.
  70. Return Value:
  71. None.
  72. --*/
  73. {
  74. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  75. ("==>NdisReadEisaSlotInformationEx: WrapperConfigurationContext %p\n", WrapperConfigurationContext));
  76. #if !DBG
  77. UNREFERENCED_PARAMETER(WrapperConfigurationContext);
  78. #endif
  79. UNREFERENCED_PARAMETER(SlotNumber);
  80. UNREFERENCED_PARAMETER(EisaData);
  81. UNREFERENCED_PARAMETER(NumberOfFunctions);
  82. *Status = NDIS_STATUS_NOT_SUPPORTED;
  83. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  84. ("<==NdisReadEisaSlotInformationEx: WrapperConfigurationContext %p, Status %lx\n", WrapperConfigurationContext, *Status));
  85. return;
  86. }
  87. ULONG
  88. NdisImmediateReadPciSlotInformation(
  89. IN NDIS_HANDLE WrapperConfigurationContext,
  90. IN ULONG SlotNumber,
  91. IN ULONG Offset,
  92. IN PVOID Buffer,
  93. IN ULONG Length
  94. )
  95. /*++
  96. Routine Description:
  97. This routine reads from the PCI configuration space a specified
  98. length of bytes at a certain offset.
  99. Arguments:
  100. WrapperConfigurationContext - Context passed to MacAddAdapter.
  101. SlotNumber - The slot number of the device.
  102. Offset - Offset to read from
  103. Buffer - Place to store the bytes
  104. Length - Number of bytes to read
  105. Return Value:
  106. Returns the number of bytes read.
  107. --*/
  108. {
  109. PRTL_QUERY_REGISTRY_TABLE KeyQueryTable = (PRTL_QUERY_REGISTRY_TABLE)WrapperConfigurationContext;
  110. PNDIS_MINIPORT_BLOCK Miniport = (PNDIS_MINIPORT_BLOCK)KeyQueryTable[3].QueryRoutine;
  111. ULONG BytesRead;
  112. #if !DBG
  113. UNREFERENCED_PARAMETER(SlotNumber);
  114. #endif
  115. DBGPRINT_RAW(DBG_COMP_INIT, DBG_LEVEL_INFO,
  116. ("==>NdisImmediateReadPciSlotInformation: Miniport %p\n", Miniport));
  117. ASSERT(Miniport != NULL);
  118. NDIS_WARN(TRUE, Miniport, NDIS_GFLAG_WARN_LEVEL_3,
  119. ("NdisImmediateReadPciSlotInformation: this API is going away. Use NdisReadPciSlotInformation\n", Miniport));
  120. NDIS_WARN((SlotNumber != 0), Miniport, NDIS_GFLAG_WARN_LEVEL_2,
  121. ("NdisImmediateReadPciSlotInformation: Miniport %p passes a non-zero SlotNumber to the function\n", Miniport));
  122. BytesRead = ndisGetSetBusConfigSpace(Miniport,
  123. Offset,
  124. Buffer,
  125. Length,
  126. PCI_WHICHSPACE_CONFIG,
  127. TRUE);
  128. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  129. ("<==NdisImmediateReadPciSlotInformation: Miniport %p\n", Miniport));
  130. return BytesRead;
  131. }
  132. ULONG
  133. NdisImmediateWritePciSlotInformation(
  134. IN NDIS_HANDLE WrapperConfigurationContext,
  135. IN ULONG SlotNumber,
  136. IN ULONG Offset,
  137. IN PVOID Buffer,
  138. IN ULONG Length
  139. )
  140. /*++
  141. Routine Description:
  142. This routine writes to the PCI configuration space a specified
  143. length of bytes at a certain offset.
  144. Arguments:
  145. WrapperConfigurationContext - Context passed to MacAddAdapter.
  146. SlotNumber - The slot number of the device.
  147. Offset - Offset to read from
  148. Buffer - Place to store the bytes
  149. Length - Number of bytes to read
  150. Return Value:
  151. Returns the number of bytes written.
  152. --*/
  153. {
  154. PRTL_QUERY_REGISTRY_TABLE KeyQueryTable = (PRTL_QUERY_REGISTRY_TABLE)WrapperConfigurationContext;
  155. PNDIS_MINIPORT_BLOCK Miniport = (PNDIS_MINIPORT_BLOCK)KeyQueryTable[3].QueryRoutine;
  156. ULONG BytesWritten;
  157. #if !DBG
  158. UNREFERENCED_PARAMETER(SlotNumber);
  159. #endif
  160. DBGPRINT_RAW(DBG_COMP_INIT, DBG_LEVEL_INFO,
  161. ("==>NdisImmediateWritePciSlotInformation: Miniport %p\n", Miniport));
  162. ASSERT(Miniport != NULL);
  163. NDIS_WARN(TRUE, Miniport, NDIS_GFLAG_WARN_LEVEL_3,
  164. ("NdisImmediateWritePciSlotInformation: this API is going away. Use NdisWritePciSlotInformation\n", Miniport));
  165. NDIS_WARN((SlotNumber != 0), Miniport, NDIS_GFLAG_WARN_LEVEL_2,
  166. ("NdisImmediateWritePciSlotInformation: Miniport %p passes a non-zero SlotNumber to the function\n", Miniport));
  167. BytesWritten = ndisGetSetBusConfigSpace(Miniport,
  168. Offset,
  169. Buffer,
  170. Length,
  171. PCI_WHICHSPACE_CONFIG,
  172. FALSE);
  173. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  174. ("<==NdisImmediateWritePciSlotInformation: Miniport %p\n", Miniport));
  175. return BytesWritten;
  176. }
  177. ULONG
  178. NdisReadPciSlotInformation(
  179. IN NDIS_HANDLE NdisAdapterHandle,
  180. IN ULONG SlotNumber,
  181. IN ULONG Offset,
  182. IN PVOID Buffer,
  183. IN ULONG Length
  184. )
  185. /*++
  186. Routine Description:
  187. This routine reads from the PCI configuration space a specified
  188. length of bytes at a certain offset.
  189. Arguments:
  190. NdisAdapterHandle - Adapter we are talking about.
  191. SlotNumber - The slot number of the device.
  192. Offset - Offset to read from
  193. Buffer - Place to store the bytes
  194. Length - Number of bytes to read
  195. Return Value:
  196. Returns the number of bytes read.
  197. --*/
  198. {
  199. PNDIS_MINIPORT_BLOCK Miniport = (PNDIS_MINIPORT_BLOCK)NdisAdapterHandle;
  200. ULONG BytesRead;
  201. #if !DBG
  202. UNREFERENCED_PARAMETER(SlotNumber);
  203. #endif
  204. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  205. ("==>NdisReadPciSlotInformation: Miniport %p\n", Miniport));
  206. NDIS_WARN((SlotNumber != 0), Miniport, NDIS_GFLAG_WARN_LEVEL_2,
  207. ("NdisReadPciSlotInformation: Miniport %p passes a non-zero SlotNumber to the function\n", Miniport));
  208. BytesRead = ndisGetSetBusConfigSpace(Miniport,
  209. Offset,
  210. Buffer,
  211. Length,
  212. PCI_WHICHSPACE_CONFIG,
  213. TRUE);
  214. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  215. ("<==NdisReadPciSlotInformation: Miniport %p\n", Miniport));
  216. return BytesRead;
  217. }
  218. ULONG
  219. NdisWritePciSlotInformation(
  220. IN NDIS_HANDLE NdisAdapterHandle,
  221. IN ULONG SlotNumber,
  222. IN ULONG Offset,
  223. IN PVOID Buffer,
  224. IN ULONG Length
  225. )
  226. /*++
  227. Routine Description:
  228. This routine writes to the PCI configuration space a specified
  229. length of bytes at a certain offset.
  230. Arguments:
  231. NdisAdapterHandle - Adapter we are talking about.
  232. SlotNumber - The slot number of the device.
  233. Offset - Offset to read from
  234. Buffer - Place to store the bytes
  235. Length - Number of bytes to read
  236. Return Value:
  237. Returns the number of bytes written.
  238. --*/
  239. {
  240. PNDIS_MINIPORT_BLOCK Miniport = (PNDIS_MINIPORT_BLOCK)NdisAdapterHandle;
  241. ULONG BytesWritten;
  242. #if !DBG
  243. UNREFERENCED_PARAMETER(SlotNumber);
  244. #endif
  245. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  246. ("==>NdisWritePciSlotInformation: Miniport %p\n", Miniport));
  247. NDIS_WARN((SlotNumber != 0), Miniport, NDIS_GFLAG_WARN_LEVEL_2,
  248. ("NdisWritePciSlotInformation: Miniport %p passes a non-zero SlotNumber to the function\n", Miniport));
  249. BytesWritten = ndisGetSetBusConfigSpace(Miniport,
  250. Offset,
  251. Buffer,
  252. Length,
  253. PCI_WHICHSPACE_CONFIG,
  254. FALSE);
  255. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  256. ("<==NdisWritePciSlotInformation: Miniport %p\n", Miniport));
  257. return BytesWritten;
  258. }
  259. NTSTATUS
  260. FASTCALL
  261. ndisQueryBusInterface(
  262. IN PNDIS_MINIPORT_BLOCK Miniport
  263. )
  264. {
  265. PIRP Irp;
  266. PIO_STACK_LOCATION IrpSp;
  267. NTSTATUS Status;
  268. PDEVICE_OBJECT NextDeviceObject;
  269. BUS_INTERFACE_STANDARD BusInterfaceStandard = {0};
  270. DBGPRINT_RAW(DBG_COMP_PNP, DBG_LEVEL_INFO,
  271. ("==>ndisQueryBusInterface: Miniport %p\n", Miniport));
  272. do {
  273. NextDeviceObject = Miniport->NextDeviceObject;
  274. //
  275. // Allocate an irp to send to PCI bus device driver.
  276. //
  277. Irp = IoAllocateIrp((CCHAR)(NextDeviceObject->StackSize + 1),
  278. FALSE);
  279. if (Irp == NULL)
  280. {
  281. ASSERT(FALSE);
  282. Status = STATUS_INSUFFICIENT_RESOURCES;
  283. break;
  284. }
  285. //
  286. // Get the stack location for the next device.
  287. //
  288. IrpSp = IoGetNextIrpStackLocation(Irp);
  289. ASSERT(IrpSp != NULL);
  290. IrpSp->MajorFunction = IRP_MJ_PNP;
  291. IrpSp->MinorFunction = IRP_MN_QUERY_INTERFACE;
  292. IrpSp->DeviceObject = NextDeviceObject;
  293. Irp->IoStatus.Status = STATUS_NOT_SUPPORTED;
  294. IrpSp->Parameters.QueryInterface.InterfaceType = &GUID_BUS_INTERFACE_STANDARD;
  295. IrpSp->Parameters.QueryInterface.Size = sizeof (BUS_INTERFACE_STANDARD);
  296. IrpSp->Parameters.QueryInterface.Version = 1;
  297. IrpSp->Parameters.QueryInterface.Interface = (PINTERFACE)&BusInterfaceStandard;
  298. ASSERT(KeGetCurrentIrql() == 0);
  299. Status = ndisPassIrpDownTheStack(Irp, NextDeviceObject);
  300. if (NT_SUCCESS(Status))
  301. {
  302. Miniport->SetBusData = BusInterfaceStandard.SetBusData;
  303. Miniport->GetBusData = BusInterfaceStandard.GetBusData;
  304. Miniport->BusDataContext = BusInterfaceStandard.Context;
  305. Status = NDIS_STATUS_SUCCESS;
  306. }
  307. IoFreeIrp(Irp);
  308. } while (FALSE);
  309. DBGPRINT_RAW(DBG_COMP_PNP, DBG_LEVEL_INFO,
  310. ("<==ndisQueryBusInterface: Miniport %p\n", Miniport));
  311. return Status;
  312. }
  313. ULONG
  314. ndisGetSetBusConfigSpace(
  315. IN PNDIS_MINIPORT_BLOCK Miniport,
  316. IN ULONG Offset,
  317. IN PVOID Buffer,
  318. IN ULONG Length,
  319. IN ULONG WhichSpace,
  320. IN BOOLEAN Read
  321. )
  322. {
  323. ULONG ActualLength = 0;
  324. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  325. ("==>ndisGetSetBusConfigSpace: Miniport %p\n", Miniport));
  326. if ((Read && MINIPORT_VERIFY_TEST_FLAG(Miniport, fMINIPORT_VERIFY_FAIL_READ_CONFIG_SPACE)) ||
  327. MINIPORT_VERIFY_TEST_FLAG(Miniport, fMINIPORT_VERIFY_FAIL_WRITE_CONFIG_SPACE))
  328. {
  329. #if DBG
  330. DbgPrint("ndisGetSetBusConfigSpace failed to verify miniport %p\n", Miniport);
  331. #endif
  332. return 0;
  333. }
  334. do
  335. {
  336. if ((Miniport->SetBusData == NULL) || (Miniport->BusDataContext == NULL))
  337. break;
  338. ActualLength = (Read ? Miniport->GetBusData : Miniport->SetBusData)(
  339. Miniport->BusDataContext,
  340. WhichSpace,
  341. Buffer,
  342. Offset,
  343. Length);
  344. } while (FALSE);
  345. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  346. ("<==ndisGetSetBusConfigSpace: Miniport %p\n", Miniport));
  347. return ActualLength;
  348. }
  349. NDIS_STATUS
  350. ndisTranslateResources(
  351. IN PNDIS_MINIPORT_BLOCK Miniport,
  352. IN CM_RESOURCE_TYPE ResourceType,
  353. IN PHYSICAL_ADDRESS Resource,
  354. OUT PPHYSICAL_ADDRESS pTranslatedResource,
  355. OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR * pResourceDescriptor OPTIONAL
  356. )
  357. {
  358. UINT j;
  359. PCM_RESOURCE_LIST AllocatedResources, AllocatedResourcesTranslated;
  360. PHYSICAL_ADDRESS Offset;
  361. PCM_PARTIAL_RESOURCE_LIST pResourceList, pResourceListTranslated;
  362. NDIS_STATUS Status = NDIS_STATUS_FAILURE;
  363. DBGPRINT_RAW(DBG_COMP_CONFIG, DBG_LEVEL_INFO,
  364. ("==>ndisTranslateResources: Miniport %p\n", Miniport));
  365. DBGPRINT_RAW(DBG_COMP_CONFIG, DBG_LEVEL_INFO,
  366. (" translating resource type: %lx, value: %I64x\n", ResourceType, Resource));
  367. do
  368. {
  369. AllocatedResources = Miniport->AllocatedResources;
  370. AllocatedResourcesTranslated = Miniport->AllocatedResourcesTranslated;
  371. if ((AllocatedResources == NULL) || (AllocatedResourcesTranslated == NULL))
  372. {
  373. Status = NDIS_STATUS_FAILURE;
  374. break;
  375. }
  376. pResourceList = &(AllocatedResources->List[0].PartialResourceList);
  377. pResourceListTranslated = &(AllocatedResourcesTranslated->List[0].PartialResourceList);
  378. for (j = 0; j < pResourceList->Count; j++)
  379. {
  380. if (pResourceList->PartialDescriptors[j].Type != ResourceType)
  381. continue;
  382. switch (ResourceType)
  383. {
  384. case CmResourceTypePort:
  385. case CmResourceTypeMemory:
  386. Offset.QuadPart = Resource.QuadPart - pResourceList->PartialDescriptors[j].u.Port.Start.QuadPart;
  387. if ((Offset.QuadPart >= 0) && (Offset.u.HighPart == 0) &&
  388. (((ULONG)(Offset.u.LowPart)) < pResourceList->PartialDescriptors[j].u.Port.Length))
  389. {
  390. pTranslatedResource->QuadPart = pResourceListTranslated->PartialDescriptors[j].u.Memory.Start.QuadPart +
  391. Offset.QuadPart;
  392. Status = NDIS_STATUS_SUCCESS;
  393. }
  394. break;
  395. case CmResourceTypeInterrupt:
  396. if (Resource.QuadPart == pResourceList->PartialDescriptors[j].u.Interrupt.Level)
  397. {
  398. pTranslatedResource->QuadPart = (LONGLONG)pResourceListTranslated->PartialDescriptors[j].u.Interrupt.Level;
  399. Status = NDIS_STATUS_SUCCESS;
  400. }
  401. break;
  402. case CmResourceTypeDma:
  403. if (Resource.QuadPart == pResourceList->PartialDescriptors[j].u.Dma.Channel)
  404. {
  405. pTranslatedResource->QuadPart = (LONGLONG)pResourceListTranslated->PartialDescriptors[j].u.Dma.Channel;
  406. Status = NDIS_STATUS_SUCCESS;
  407. }
  408. break;
  409. }
  410. if (Status == NDIS_STATUS_SUCCESS)
  411. {
  412. DBGPRINT_RAW(DBG_COMP_INIT, DBG_LEVEL_INFO,
  413. (" ndisTranslateResources translated %I64x to %I64x\n", Resource, *pTranslatedResource));
  414. if (pResourceDescriptor != NULL)
  415. {
  416. *pResourceDescriptor = &pResourceListTranslated->PartialDescriptors[j];
  417. }
  418. break;
  419. }
  420. }
  421. } while (FALSE);
  422. DBGPRINT_RAW(DBG_COMP_CONFIG, DBG_LEVEL_INFO,
  423. ("<==ndisTranslateResources: Miniport %p, Status %lx\n", Miniport, Status));
  424. return Status;
  425. }
  426. ULONG
  427. NdisReadPcmciaAttributeMemory(
  428. IN NDIS_HANDLE NdisAdapterHandle,
  429. IN ULONG Offset,
  430. IN PVOID Buffer,
  431. IN ULONG Length
  432. )
  433. {
  434. PNDIS_MINIPORT_BLOCK Miniport = (PNDIS_MINIPORT_BLOCK)NdisAdapterHandle;
  435. PDEVICE_OBJECT NextDeviceObject;
  436. ULONG BytesRead;
  437. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  438. ("==>NdisReadPcmciaAttributeMemory: Miniport %p\n", Miniport));
  439. NextDeviceObject = Miniport->NextDeviceObject;
  440. ASSERT(NextDeviceObject != NULL);
  441. //
  442. // use direct entry points in bus driver to get/set bus data
  443. //
  444. BytesRead = ndisGetSetBusConfigSpace(Miniport,
  445. Offset,
  446. Buffer,
  447. Length,
  448. PCCARD_ATTRIBUTE_MEMORY,
  449. TRUE);
  450. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  451. ("<==NdisReadPcmciaAttributeMemory: Miniport %p, Bytes Read %lx\n", Miniport, BytesRead));
  452. return BytesRead;
  453. }
  454. ULONG
  455. NdisWritePcmciaAttributeMemory(
  456. IN NDIS_HANDLE NdisAdapterHandle,
  457. IN ULONG Offset,
  458. IN PVOID Buffer,
  459. IN ULONG Length
  460. )
  461. {
  462. PNDIS_MINIPORT_BLOCK Miniport = (PNDIS_MINIPORT_BLOCK)NdisAdapterHandle;
  463. PDEVICE_OBJECT NextDeviceObject;
  464. ULONG BytesWritten;
  465. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  466. ("==>NdisWritePcmciaAttributeMemory: Miniport %p\n", Miniport));
  467. NextDeviceObject = Miniport->NextDeviceObject;
  468. ASSERT(NextDeviceObject != NULL);
  469. BytesWritten = ndisGetSetBusConfigSpace(Miniport,
  470. Offset,
  471. Buffer,
  472. Length,
  473. PCCARD_ATTRIBUTE_MEMORY,
  474. FALSE);
  475. DBGPRINT_RAW(DBG_COMP_BUSINFO, DBG_LEVEL_INFO,
  476. ("<==NdisWritePcmciaAttributeMemory: Miniport %p, Bytes Written %.8x\n", Miniport, BytesWritten));
  477. return BytesWritten;
  478. }
  479. VOID
  480. NdisOverrideBusNumber(
  481. IN NDIS_HANDLE WrapperConfigurationContext,
  482. IN NDIS_HANDLE MiniportAdapterHandle OPTIONAL,
  483. IN ULONG BusNumber
  484. )
  485. {
  486. #if DBG
  487. PRTL_QUERY_REGISTRY_TABLE KeyQueryTable = (PRTL_QUERY_REGISTRY_TABLE)WrapperConfigurationContext;
  488. PNDIS_MINIPORT_BLOCK Miniport = (PNDIS_MINIPORT_BLOCK)KeyQueryTable[3].QueryRoutine;
  489. NDIS_WARN(TRUE, Miniport, NDIS_GFLAG_WARN_LEVEL_1,
  490. ("NdisOverrideBusNumber: This API is going away.\n", Miniport));
  491. #else
  492. UNREFERENCED_PARAMETER(WrapperConfigurationContext);
  493. #endif
  494. UNREFERENCED_PARAMETER(MiniportAdapterHandle);
  495. UNREFERENCED_PARAMETER(BusNumber);
  496. }
  497. VOID
  498. NdisReadMcaPosInformation(
  499. OUT PNDIS_STATUS Status,
  500. IN NDIS_HANDLE WrapperConfigurationContext,
  501. OUT PUINT ChannelNumber,
  502. OUT PNDIS_MCA_POS_DATA McaData
  503. )
  504. {
  505. UNREFERENCED_PARAMETER(WrapperConfigurationContext);
  506. UNREFERENCED_PARAMETER(ChannelNumber);
  507. UNREFERENCED_PARAMETER(McaData);
  508. *Status = NDIS_STATUS_NOT_SUPPORTED;
  509. return;
  510. }