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.

1490 lines
36 KiB

  1. /*++
  2. Copyright (c) 1990-1995 Microsoft Corporation
  3. Module Name:
  4. protos.h
  5. Abstract:
  6. NDIS wrapper function prototypes
  7. Author:
  8. Environment:
  9. Kernel mode, FSD
  10. Revision History:
  11. Jun-95 Jameel Hyder Split up from a monolithic file
  12. --*/
  13. NTSTATUS
  14. DriverEntry(
  15. IN PDRIVER_OBJECT DriverObject,
  16. IN PUNICODE_STRING RegistryPath
  17. );
  18. #if NDIS_UNLOAD
  19. VOID
  20. ndisUnload(
  21. IN PDRIVER_OBJECT DriverObject
  22. );
  23. #endif
  24. NTSTATUS
  25. ndisBuildDeviceAcl(
  26. OUT PACL *DeviceAcl,
  27. IN BOOLEAN AddNetConfigOps,
  28. IN BOOLEAN AddNetworkService
  29. );
  30. NTSTATUS
  31. ndisCreateSecurityDescriptor(
  32. IN PDEVICE_OBJECT DeviceObject,
  33. OUT PSECURITY_DESCRIPTOR * pSecurityDescriptor,
  34. IN BOOLEAN AddNetConfigOps,
  35. IN BOOLEAN AddNetworkService
  36. );
  37. BOOLEAN
  38. ndisCheckAccess (
  39. PIRP Irp,
  40. PIO_STACK_LOCATION IrpSp,
  41. PNTSTATUS Status,
  42. PSECURITY_DESCRIPTOR SecurityDescriptor
  43. );
  44. VOID
  45. ndisReadRegistry(
  46. VOID
  47. );
  48. VOID
  49. ndisWorkerThread(
  50. IN PVOID Context
  51. );
  52. NTSTATUS
  53. ndisReadRegParameters(
  54. IN PWSTR ValueName,
  55. IN ULONG ValueType,
  56. IN PVOID ValueData,
  57. IN ULONG ValueLength,
  58. IN PVOID Context,
  59. IN PVOID EntryContext
  60. );
  61. NTSTATUS
  62. ndisReadProcessorAffinityMask(
  63. IN PWSTR ValueName,
  64. IN ULONG ValueType,
  65. IN PVOID ValueData,
  66. IN ULONG ValueLength,
  67. IN PVOID Context,
  68. IN PVOID EntryContext
  69. );
  70. NTSTATUS
  71. ndisAddMediaTypeToArray(
  72. IN PWSTR ValueName,
  73. IN ULONG ValueType,
  74. IN PVOID ValueData,
  75. IN ULONG ValueLength,
  76. IN PVOID Context,
  77. IN PVOID EntryContext
  78. );
  79. NDIS_STATUS
  80. ndisCloseAllBindingsOnProtocol(
  81. PNDIS_PROTOCOL_BLOCK Protocol
  82. );
  83. BOOLEAN
  84. ndisIMCheckDeviceInstance(
  85. IN PNDIS_M_DRIVER_BLOCK MiniBlock,
  86. IN PUNICODE_STRING DeviceInstance,
  87. OUT PNDIS_HANDLE DeviceContext OPTIONAL
  88. );
  89. NDIS_STATUS
  90. ndisIMInitializeDeviceInstance(
  91. IN PNDIS_MINIPORT_BLOCK Miniport,
  92. IN NDIS_HANDLE DeviceContext,
  93. IN BOOLEAN fStartIrp
  94. );
  95. NDIS_STATUS
  96. ndisIMQueueDeviceInstance(
  97. IN PNDIS_M_DRIVER_BLOCK MiniBlock,
  98. IN PNDIS_STRING DeviceInstance,
  99. IN NDIS_HANDLE DeviceContext
  100. );
  101. NTSTATUS
  102. FASTCALL
  103. ndisPnPQueryRemoveDevice(
  104. IN PDEVICE_OBJECT DeviceObject,
  105. IN PIRP Irp
  106. );
  107. NTSTATUS
  108. FASTCALL
  109. ndisPnPCancelRemoveDevice(
  110. IN PDEVICE_OBJECT DeviceObject,
  111. IN PIRP Irp
  112. );
  113. NTSTATUS
  114. FASTCALL
  115. ndisPnPRemoveDevice(
  116. IN PDEVICE_OBJECT DeviceObject,
  117. IN PIRP Irp OPTIONAL
  118. );
  119. VOID
  120. ndisSetDeviceNames(
  121. IN PNDIS_STRING ExportName,
  122. OUT PNDIS_STRING DeviceName,
  123. OUT PNDIS_STRING BaseName,
  124. IN PUCHAR Buffer
  125. );
  126. NTSTATUS
  127. FASTCALL
  128. ndisPnPQueryStopDevice(
  129. IN PDEVICE_OBJECT DeviceObject,
  130. IN PIRP Irp
  131. );
  132. NTSTATUS
  133. FASTCALL
  134. ndisPnPCancelStopDevice(
  135. IN PDEVICE_OBJECT DeviceObject,
  136. IN PIRP Irp
  137. );
  138. NTSTATUS
  139. FASTCALL
  140. ndisPnPStopDevice(
  141. IN PDEVICE_OBJECT DeviceObject,
  142. IN PIRP Irp
  143. );
  144. NDIS_STATUS
  145. ndisTranslateResources(
  146. IN PNDIS_MINIPORT_BLOCK Miniport,
  147. IN CM_RESOURCE_TYPE ResourceType,
  148. IN PHYSICAL_ADDRESS Resource,
  149. OUT PPHYSICAL_ADDRESS pTranslatedResource,
  150. OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR *pResourceDescriptor OPTIONAL
  151. );
  152. NTSTATUS
  153. FASTCALL
  154. ndisQueryBusInterface(
  155. IN PNDIS_MINIPORT_BLOCK Miniport
  156. );
  157. ULONG
  158. ndisGetSetBusConfigSpace(
  159. IN PNDIS_MINIPORT_BLOCK Miniport,
  160. IN ULONG Offset,
  161. IN PVOID Buffer,
  162. IN ULONG Length,
  163. IN ULONG WhichSpace,
  164. IN BOOLEAN Read
  165. );
  166. VOID
  167. FASTCALL
  168. ndisReinitializeMiniportBlock(
  169. IN PNDIS_MINIPORT_BLOCK Miniport
  170. );
  171. VOID
  172. FASTCALL
  173. ndisCheckAdapterBindings(
  174. IN PNDIS_MINIPORT_BLOCK Miniport,
  175. IN PNDIS_PROTOCOL_BLOCK Protocol OPTIONAL
  176. );
  177. NDIS_STATUS
  178. FASTCALL
  179. ndisPnPStartDevice(
  180. IN PDEVICE_OBJECT DeviceObject,
  181. IN PIRP Irp
  182. );
  183. NTSTATUS
  184. ndisQueryReferenceBusInterface(
  185. IN PDEVICE_OBJECT PnpDeviceObject,
  186. OUT PBUS_INTERFACE_REFERENCE * BusInterface
  187. );
  188. NTSTATUS
  189. ndisPnPAddDevice(
  190. IN PDRIVER_OBJECT DriverObject,
  191. IN PDEVICE_OBJECT PhysicalDeviceObject
  192. );
  193. NTSTATUS
  194. ndisAddDevice(
  195. IN PDRIVER_OBJECT DriverObject,
  196. IN PUNICODE_STRING pExportName,
  197. IN PDEVICE_OBJECT PhysicalDeviceObject,
  198. IN ULONG Characteristics
  199. );
  200. NTSTATUS
  201. ndisWritePnPCapabilities(
  202. IN PNDIS_MINIPORT_BLOCK Miniport,
  203. IN ULONG PnPCapabilities
  204. );
  205. NDIS_STATUS
  206. ndisRegisterMiniportDriver(
  207. IN NDIS_HANDLE NdisWrapperHandle,
  208. IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
  209. IN UINT CharacteristicsLength,
  210. OUT PNDIS_HANDLE DriverHandle
  211. );
  212. NTSTATUS
  213. ndisDispatchRequest(
  214. IN PDEVICE_OBJECT pDeviceObject,
  215. IN PIRP pIrp
  216. );
  217. NTSTATUS
  218. FASTCALL
  219. ndisHandlePnPRequest(
  220. IN PIRP pIrp
  221. );
  222. NTSTATUS
  223. FASTCALL
  224. ndisHandleLegacyTransport(
  225. IN PUNICODE_STRING pDevice
  226. );
  227. NTSTATUS
  228. FASTCALL
  229. ndisHandleProtocolBindNotification(
  230. IN PUNICODE_STRING pDevice,
  231. IN PUNICODE_STRING Protocol
  232. );
  233. NTSTATUS
  234. FASTCALL
  235. ndisHandleProtocolUnbindNotification(
  236. IN PUNICODE_STRING pDevice,
  237. IN PUNICODE_STRING Protocol
  238. );
  239. NTSTATUS
  240. ndisHandleProtocolReconfigNotification(
  241. IN PUNICODE_STRING pDevice,
  242. IN PUNICODE_STRING Protocol,
  243. IN PVOID ReConfigBuffer,
  244. IN UINT ReConfigBufferSize,
  245. IN UINT Operation
  246. );
  247. NTSTATUS
  248. FASTCALL
  249. ndisHandleProtocolUnloadNotification(
  250. IN PUNICODE_STRING Protocol
  251. );
  252. NTSTATUS
  253. FASTCALL
  254. ndisHandleOrphanDevice(
  255. IN PUNICODE_STRING pDevice
  256. );
  257. NTSTATUS
  258. FASTCALL
  259. ndisHandleUModePnPOp(
  260. IN PNDIS_PNP_OPERATION PnPOp
  261. );
  262. NTSTATUS
  263. FASTCALL
  264. ndisEnumerateInterfaces(
  265. IN PNDIS_ENUM_INTF EnumIntf,
  266. IN UINT BufferLength,
  267. IN PUINT OutputLength
  268. );
  269. VOID
  270. ndisFindRootDevice(
  271. IN PNDIS_STRING DeviceName,
  272. IN BOOLEAN fTester,
  273. OUT PNDIS_STRING * pBindDeviceName,
  274. OUT PNDIS_STRING * pRootDeviceName,
  275. OUT PNDIS_MINIPORT_BLOCK * pMiniport
  276. );
  277. PNDIS_MINIPORT_BLOCK
  278. ndisFindMiniportOnGlobalList(
  279. IN PNDIS_STRING DeviceName
  280. );
  281. NTSTATUS
  282. ndisUnbindProtocol(
  283. IN PNDIS_OPEN_BLOCK Open,
  284. IN PNDIS_PROTOCOL_BLOCK Protocol,
  285. IN PNDIS_MINIPORT_BLOCK Miniport,
  286. IN BOOLEAN Notify
  287. );
  288. VOID
  289. ndisReferenceMiniportByName(
  290. IN PUNICODE_STRING DeviceName,
  291. OUT PNDIS_MINIPORT_BLOCK * pMiniport
  292. );
  293. PNDIS_OPEN_BLOCK
  294. FASTCALL
  295. ndisMapOpenByName(
  296. IN PUNICODE_STRING DeviceName,
  297. IN PNDIS_PROTOCOL_BLOCK Protocol,
  298. IN BOOLEAN fUnbinding
  299. );
  300. VOID
  301. NdisMCancelTimer(
  302. IN PNDIS_MINIPORT_TIMER Timer,
  303. OUT PBOOLEAN TimerCancelled
  304. );
  305. //
  306. // general reference/dereference functions
  307. //
  308. BOOLEAN
  309. FASTCALL
  310. ndisReferenceRef(
  311. IN PREFERENCE RefP
  312. );
  313. BOOLEAN
  314. FASTCALL
  315. ndisDereferenceRef(
  316. IN PREFERENCE RefP
  317. );
  318. VOID
  319. FASTCALL
  320. ndisInitializeRef(
  321. IN PREFERENCE RefP
  322. );
  323. BOOLEAN
  324. FASTCALL
  325. ndisCloseRef(
  326. IN PREFERENCE RefP
  327. );
  328. BOOLEAN
  329. FASTCALL
  330. ndisReferenceULongRef(
  331. IN PULONG_REFERENCE RefP
  332. );
  333. VOID
  334. FASTCALL
  335. ndisReferenceULongRefNoCheck(
  336. IN PULONG_REFERENCE RefP
  337. );
  338. BOOLEAN
  339. FASTCALL
  340. ndisDereferenceULongRef(
  341. IN PULONG_REFERENCE RefP
  342. );
  343. VOID
  344. FASTCALL
  345. ndisInitializeULongRef(
  346. IN PULONG_REFERENCE RefP
  347. );
  348. BOOLEAN
  349. FASTCALL
  350. ndisCloseULongRef(
  351. IN PULONG_REFERENCE RefP
  352. );
  353. #if DBG
  354. BOOLEAN
  355. FASTCALL
  356. ndisReferenceProtocol(
  357. IN PNDIS_PROTOCOL_BLOCK Protocol
  358. );
  359. #else
  360. #define ndisReferenceProtocol(ProtP) ndisReferenceRef(&(ProtP)->Ref)
  361. #endif
  362. NTSTATUS
  363. FASTCALL
  364. ndisReferenceProtocolByName(
  365. IN PUNICODE_STRING ProtocolName,
  366. IN OUT PNDIS_PROTOCOL_BLOCK * Protocol,
  367. IN BOOLEAN fPartialMatch
  368. );
  369. VOID
  370. FASTCALL
  371. ndisDereferenceProtocol(
  372. IN PNDIS_PROTOCOL_BLOCK Protocol,
  373. IN BOOLEAN fProtocolListLockHeld
  374. );
  375. VOID
  376. FASTCALL
  377. ndisDeQueueOpenOnProtocol(
  378. IN PNDIS_OPEN_BLOCK Open,
  379. IN PNDIS_PROTOCOL_BLOCK Protocol
  380. );
  381. BOOLEAN
  382. ndisCheckPortUsage(
  383. IN ULONG PortNumber,
  384. IN PNDIS_MINIPORT_BLOCK Miniport,
  385. OUT PULONG pTranslatedPort,
  386. OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR *pResourceDescriptor
  387. );
  388. VOID
  389. ndisImmediateReadWritePort(
  390. IN NDIS_HANDLE WrapperConfigurationContext,
  391. IN ULONG Port,
  392. IN OUT PVOID Data,
  393. IN ULONG Size,
  394. IN BOOLEAN Read
  395. );
  396. BOOLEAN
  397. ndisCheckMemoryUsage(
  398. IN ULONG Address,
  399. IN PNDIS_MINIPORT_BLOCK Miniport,
  400. OUT PULONG pTranslatedAddress,
  401. OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR *pResourceDescriptor
  402. );
  403. VOID
  404. ndisImmediateReadWriteSharedMemory(
  405. IN NDIS_HANDLE WrapperConfigurationContext,
  406. IN ULONG SharedMemoryAddress,
  407. OUT PUCHAR Buffer,
  408. IN ULONG Length,
  409. IN BOOLEAN Read
  410. );
  411. NTSTATUS
  412. ndisStartMapping(
  413. IN INTERFACE_TYPE InterfaceType,
  414. IN ULONG BusNumber,
  415. IN ULONG InitialAddress,
  416. IN ULONG Length,
  417. IN ULONG AddressSpace,
  418. OUT PVOID * InitialMapping,
  419. OUT PBOOLEAN Mapped
  420. );
  421. NTSTATUS
  422. ndisEndMapping(
  423. IN PVOID InitialMapping,
  424. IN ULONG Length,
  425. IN BOOLEAN Mapped
  426. );
  427. NDIS_STATUS
  428. ndisInitializeAdapter(
  429. IN PNDIS_M_DRIVER_BLOCK pMiniBlock,
  430. IN PDEVICE_OBJECT DeviceObject,
  431. IN PUNICODE_STRING RegServiceName,
  432. IN NDIS_HANDLE DeviceContext OPTIONAL
  433. );
  434. BOOLEAN
  435. ndisWmiGuidIsAdapterSpecific(
  436. IN LPGUID guid
  437. );
  438. NTSTATUS
  439. ndisCreateAdapterInstanceName(
  440. OUT PUNICODE_STRING * pAdapterInstanceName,
  441. IN PDEVICE_OBJECT PhysicalDeviceObject
  442. );
  443. NDIS_STATUS
  444. ndisInitializeConfiguration(
  445. OUT PNDIS_WRAPPER_CONFIGURATION_HANDLE pConfigurationHandle,
  446. IN PNDIS_MINIPORT_BLOCK Miniport,
  447. IN PUNICODE_STRING pExportName
  448. );
  449. NTSTATUS
  450. ndisReadBindPaths(
  451. IN PNDIS_MINIPORT_BLOCK Miniport,
  452. IN PRTL_QUERY_REGISTRY_TABLE LQueryTable
  453. );
  454. NDIS_STATUS
  455. ndisMInitializeAdapter(
  456. IN PNDIS_M_DRIVER_BLOCK pMiniDriver,
  457. IN PNDIS_WRAPPER_CONFIGURATION_HANDLE pConfigurationHandle,
  458. IN PUNICODE_STRING pExportName,
  459. IN NDIS_HANDLE DeviceContext OPTIONAL
  460. );
  461. VOID
  462. FASTCALL
  463. ndisInitializeBinding(
  464. IN PNDIS_MINIPORT_BLOCK Miniport,
  465. IN PNDIS_PROTOCOL_BLOCK Protocol
  466. );
  467. BOOLEAN
  468. FASTCALL
  469. ndisProtocolAlreadyBound(
  470. IN PNDIS_PROTOCOL_BLOCK Protocol,
  471. IN PNDIS_MINIPORT_BLOCK Miniport
  472. );
  473. NTSTATUS
  474. FASTCALL
  475. ndisMShutdownMiniport(
  476. IN PNDIS_MINIPORT_BLOCK Miniport
  477. );
  478. NDIS_STATUS
  479. FASTCALL
  480. ndisCloseMiniportBindings(
  481. IN PNDIS_MINIPORT_BLOCK Miniport
  482. );
  483. VOID
  484. ndisCheckProtocolBindings(
  485. IN PNDIS_PROTOCOL_BLOCK Protocol
  486. );
  487. VOID
  488. ndisMQueuedAllocateSharedHandler(
  489. IN PASYNC_WORKITEM pWorkItem
  490. );
  491. VOID
  492. ndisMQueuedFreeSharedHandler(
  493. IN PASYNC_WORKITEM pWorkItem
  494. );
  495. /*++
  496. BOOLEAN
  497. ndisReferenceDriver(
  498. IN PNDIS_M_DRIVER_BLOCK DriverP
  499. );
  500. --*/
  501. #define ndisReferenceDriver(DriverP) ndisReferenceRef(&(DriverP)->Ref)
  502. VOID
  503. FASTCALL
  504. ndisDereferenceDriver(
  505. IN PNDIS_M_DRIVER_BLOCK DriverP,
  506. IN BOOLEAN fGlobalLockHeld
  507. );
  508. BOOLEAN
  509. FASTCALL
  510. ndisQueueMiniportOnDriver(
  511. IN PNDIS_MINIPORT_BLOCK Miniport,
  512. IN PNDIS_M_DRIVER_BLOCK Driver
  513. );
  514. VOID
  515. FASTCALL
  516. ndisDeQueueMiniportOnDriver(
  517. IN PNDIS_MINIPORT_BLOCK Miniport,
  518. IN PNDIS_M_DRIVER_BLOCK Driver
  519. );
  520. #if DBG
  521. BOOLEAN
  522. FASTCALL
  523. ndisReferenceMiniport(
  524. IN PNDIS_MINIPORT_BLOCK Miniport
  525. );
  526. VOID
  527. FASTCALL
  528. ndisReferenceMiniportNoCheck(
  529. IN PNDIS_MINIPORT_BLOCK Miniport
  530. );
  531. #else
  532. #define ndisReferenceMiniport(Miniport) ndisReferenceULongRef(&(Miniport)->Ref)
  533. #define ndisReferenceMiniportNoCheck(Miniport) ndisReferenceULongRefNoCheck(&(Miniport)->Ref)
  534. #endif
  535. #ifdef TRACK_MINIPORT_REFCOUNTS
  536. BOOLEAN
  537. ndisReferenceMiniportAndLog(
  538. IN PNDIS_MINIPORT_BLOCK Miniport,
  539. IN UINT Line,
  540. IN UINT Module
  541. );
  542. VOID
  543. ndisReferenceMiniportAndLogNoCheck(
  544. IN PNDIS_MINIPORT_BLOCK Miniport,
  545. IN UINT Line,
  546. IN UINT Module
  547. );
  548. BOOLEAN
  549. ndisReferenceMiniportAndLogCreate(
  550. IN PNDIS_MINIPORT_BLOCK Miniport,
  551. IN UINT Line,
  552. IN UINT Module,
  553. IN PIRP Irp
  554. );
  555. #endif
  556. VOID
  557. FASTCALL
  558. ndisDereferenceMiniport(
  559. IN PNDIS_MINIPORT_BLOCK Miniport
  560. );
  561. VOID
  562. FASTCALL
  563. ndisDeQueueOpenOnMiniport(
  564. IN PNDIS_OPEN_BLOCK MiniportOpen,
  565. IN PNDIS_MINIPORT_BLOCK Miniport
  566. );
  567. VOID
  568. FASTCALL
  569. ndisInitializePackage(
  570. IN PPKG_REF pPkg
  571. );
  572. VOID
  573. FASTCALL
  574. ndisReferencePackage(
  575. IN PPKG_REF pPkg
  576. );
  577. VOID
  578. FASTCALL
  579. ndisDereferencePackage(
  580. IN PPKG_REF pPkg
  581. );
  582. #define ProtocolReferencePackage() ndisReferencePackage(&ndisPkgs[NDSP_PKG])
  583. #define MiniportReferencePackage() ndisReferencePackage(&ndisPkgs[NDSM_PKG])
  584. #define PnPReferencePackage() ndisReferencePackage(&ndisPkgs[NPNP_PKG])
  585. #define CoReferencePackage() ndisReferencePackage(&ndisPkgs[NDCO_PKG])
  586. #define EthReferencePackage() ndisReferencePackage(&ndisPkgs[NDSE_PKG])
  587. #define FddiReferencePackage() ndisReferencePackage(&ndisPkgs[NDSF_PKG])
  588. #define TrReferencePackage() ndisReferencePackage(&ndisPkgs[NDST_PKG])
  589. #define ArcReferencePackage() ndisReferencePackage(&ndisPkgs[NDSA_PKG])
  590. #define ProtocolDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDSP_PKG])
  591. #define MiniportDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDSM_PKG])
  592. #define PnPDereferencePackage() ndisDereferencePackage(&ndisPkgs[NPNP_PKG])
  593. #define CoDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDCO_PKG])
  594. #define EthDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDSE_PKG])
  595. #define FddiDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDSF_PKG])
  596. #define TrDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDST_PKG])
  597. #define ArcDereferencePackage() ndisDereferencePackage(&ndisPkgs[NDSA_PKG])
  598. //
  599. // IRP handlers established on behalf of NDIS devices by the wrapper.
  600. //
  601. NTSTATUS
  602. ndisCreateIrpHandler(
  603. IN PDEVICE_OBJECT DeviceObject,
  604. IN PIRP Irp
  605. );
  606. NTSTATUS
  607. ndisDeviceControlIrpHandler(
  608. IN PDEVICE_OBJECT DeviceObject,
  609. IN PIRP Irp
  610. );
  611. NTSTATUS
  612. ndisCloseIrpHandler(
  613. IN PDEVICE_OBJECT DeviceObject,
  614. IN PIRP Irp
  615. );
  616. NTSTATUS
  617. ndisDummyIrpHandler(
  618. IN PDEVICE_OBJECT DeviceObject,
  619. IN PIRP Irp
  620. );
  621. VOID
  622. ndisCancelLogIrp(
  623. IN PDEVICE_OBJECT DeviceObject,
  624. IN PIRP Irp
  625. );
  626. NDIS_STATUS
  627. FASTCALL
  628. ndisMGetLogData(
  629. IN PNDIS_MINIPORT_BLOCK Miniport,
  630. IN PIRP Irp
  631. );
  632. BOOLEAN
  633. FASTCALL
  634. ndisQueueOpenOnProtocol(
  635. IN PNDIS_OPEN_BLOCK Open,
  636. IN PNDIS_PROTOCOL_BLOCK Protocol
  637. );
  638. VOID
  639. NdisCancelTimer(
  640. IN PNDIS_TIMER Timer,
  641. OUT PBOOLEAN TimerCancelled
  642. );
  643. //
  644. // Dma operations
  645. //
  646. extern
  647. IO_ALLOCATION_ACTION
  648. ndisDmaExecutionRoutine(
  649. IN PDEVICE_OBJECT DeviceObject,
  650. IN PIRP Irp,
  651. IN PVOID MapRegisterBase,
  652. IN PVOID Context
  653. );
  654. //
  655. // Map Registers
  656. //
  657. extern
  658. IO_ALLOCATION_ACTION
  659. ndisAllocationExecutionRoutine(
  660. IN PDEVICE_OBJECT DeviceObject,
  661. IN PIRP Irp,
  662. IN PVOID MapRegisterBase,
  663. IN PVOID Context
  664. );
  665. #undef NdisMSendResourcesAvailable
  666. VOID
  667. NdisMSendResourcesAvailable(
  668. IN NDIS_HANDLE MiniportAdapterHandle
  669. );
  670. #undef NdisMResetComplete
  671. VOID
  672. NdisMResetComplete(
  673. IN NDIS_HANDLE MiniportAdapterHandle,
  674. IN NDIS_STATUS Status,
  675. IN BOOLEAN AddressingReset
  676. );
  677. NTSTATUS
  678. ndisSaveParameters(
  679. IN PWSTR ValueName,
  680. IN ULONG ValueType,
  681. IN PVOID ValueData,
  682. IN ULONG ValueLength,
  683. IN PVOID Context,
  684. IN PVOID EntryContext
  685. );
  686. NTSTATUS
  687. ndisReadParameter(
  688. IN PWSTR ValueName,
  689. IN ULONG ValueType,
  690. IN PVOID ValueData,
  691. IN ULONG ValueLength,
  692. IN PVOID Context,
  693. IN PVOID EntryContext
  694. );
  695. VOID
  696. FASTCALL
  697. ndisMCommonHaltMiniport(
  698. IN PNDIS_MINIPORT_BLOCK Miniport
  699. );
  700. VOID
  701. FASTCALL
  702. ndisMHaltMiniport(
  703. IN PNDIS_MINIPORT_BLOCK Miniport
  704. );
  705. VOID
  706. ndisMUnload(
  707. IN PDRIVER_OBJECT DriverObject
  708. );
  709. NDIS_STATUS
  710. FASTCALL
  711. ndisQueryDeviceOid(
  712. IN PNDIS_USER_OPEN_CONTEXT OpenContext,
  713. IN PNDIS_REQUEST QueryRequest,
  714. IN NDIS_OID Oid,
  715. IN PVOID Buffer,
  716. IN UINT BufferLength
  717. );
  718. BOOLEAN
  719. FASTCALL
  720. ndisValidOid(
  721. IN PNDIS_USER_OPEN_CONTEXT OpenContext,
  722. IN NDIS_OID Oid
  723. );
  724. NDIS_STATUS
  725. FASTCALL
  726. ndisSplitStatisticsOids(
  727. IN PNDIS_USER_OPEN_CONTEXT OpenContext,
  728. IN PNDIS_OID OidList,
  729. IN ULONG NumOids
  730. );
  731. VOID
  732. FASTCALL
  733. ndisMFinishClose(
  734. IN PNDIS_OPEN_BLOCK Open
  735. );
  736. VOID
  737. ndisMQueuedFinishClose(
  738. IN PNDIS_OPEN_BLOCK Open
  739. );
  740. BOOLEAN
  741. FASTCALL
  742. ndisMKillOpen(
  743. IN PNDIS_OPEN_BLOCK Open
  744. );
  745. NDIS_STATUS
  746. FASTCALL
  747. ndisQueryOidList(
  748. IN PNDIS_USER_OPEN_CONTEXT OpenContext
  749. );
  750. VOID
  751. ndisBugcheckHandler(
  752. IN PNDIS_WRAPPER_CONTEXT WrapperContext,
  753. IN ULONG Size
  754. );
  755. VOID
  756. ndisMFinishQueuedPendingOpen(
  757. IN PNDIS_POST_OPEN_PROCESSING PostOpen
  758. );
  759. VOID
  760. NdisAllocatePacketPool(
  761. OUT PNDIS_STATUS Status,
  762. OUT PNDIS_HANDLE PoolHandle,
  763. IN UINT NumberOfDescriptors,
  764. IN UINT ProtocolReservedLength
  765. );
  766. #undef NdisIMInitializeDeviceInstance
  767. NDIS_STATUS
  768. NdisIMInitializeDeviceInstance(
  769. IN NDIS_HANDLE DriverHandle,
  770. IN PNDIS_STRING DriverInstance
  771. );
  772. #undef NdisSend
  773. VOID
  774. NdisSend(
  775. OUT PNDIS_STATUS Status,
  776. IN NDIS_HANDLE NdisBindingHandle,
  777. IN PNDIS_PACKET Packet
  778. );
  779. #undef NdisSendPackets
  780. VOID
  781. NdisSendPackets(
  782. IN NDIS_HANDLE NdisBindingHandle,
  783. IN PPNDIS_PACKET PacketArray,
  784. IN UINT NumberOfPackets
  785. );
  786. VOID
  787. NdisMStartBufferPhysicalMapping(
  788. IN NDIS_HANDLE MiniportAdapterHandle,
  789. IN PNDIS_BUFFER Buffer,
  790. IN ULONG PhysicalMapRegister,
  791. IN BOOLEAN WriteToDevice,
  792. OUT PNDIS_PHYSICAL_ADDRESS_UNIT PhysicalAddressArray,
  793. OUT PUINT ArraySize
  794. );
  795. VOID
  796. NdisMCompleteBufferPhysicalMapping(
  797. IN NDIS_HANDLE MiniportAdapterHandle,
  798. IN PNDIS_BUFFER Buffer,
  799. IN ULONG PhysicalMapRegister
  800. );
  801. VOID
  802. FASTCALL
  803. ndisMAllocSGList(
  804. IN PNDIS_MINIPORT_BLOCK Miniport,
  805. IN PNDIS_PACKET Packet
  806. );
  807. VOID
  808. FASTCALL
  809. ndisMFreeSGList(
  810. IN PNDIS_MINIPORT_BLOCK Miniport,
  811. IN PNDIS_PACKET Packet
  812. );
  813. VOID
  814. ndisMProcessSGList(
  815. IN PDEVICE_OBJECT pDO,
  816. IN PIRP pIrp,
  817. IN PSCATTER_GATHER_LIST pSGL,
  818. IN PVOID Context
  819. );
  820. VOID
  821. ndisWorkItemHandler(
  822. IN PNDIS_WORK_ITEM WorkItem
  823. );
  824. //
  825. // MISC
  826. //
  827. #undef NDIS_BUFFER_TO_SPAN_PAGES
  828. ULONG
  829. NDIS_BUFFER_TO_SPAN_PAGES(
  830. IN PNDIS_BUFFER Buffer
  831. );
  832. #undef NdisGetFirstBufferFromPacket
  833. VOID
  834. NdisGetFirstBufferFromPacket(
  835. IN PNDIS_PACKET Packet,
  836. OUT PNDIS_BUFFER * FirstBuffer,
  837. OUT PVOID * FirstBufferVA,
  838. OUT PUINT FirstBufferLength,
  839. OUT PUINT TotalBufferLength
  840. );
  841. #undef NdisGetFirstBufferFromPacketSafe
  842. VOID
  843. NdisGetFirstBufferFromPacketSafe(
  844. IN PNDIS_PACKET Packet,
  845. OUT PNDIS_BUFFER * FirstBuffer,
  846. OUT PVOID * FirstBufferVA,
  847. OUT PUINT FirstBufferLength,
  848. OUT PUINT TotalBufferLength,
  849. IN MM_PAGE_PRIORITY Priority
  850. );
  851. #undef NdisBufferLength
  852. ULONG
  853. NdisBufferLength(
  854. IN PNDIS_BUFFER Buffer
  855. );
  856. #undef NdisBufferVirtualAddress
  857. PVOID
  858. NdisBufferVirtualAddress(
  859. IN PNDIS_BUFFER Buffer
  860. );
  861. #undef NdisGetBufferPhysicalArraySize
  862. VOID
  863. NdisGetBufferPhysicalArraySize(
  864. IN PNDIS_BUFFER Buffer,
  865. OUT PUINT ArraySize
  866. );
  867. #undef NdisAllocateSpinLock
  868. VOID
  869. NdisAllocateSpinLock(
  870. IN PNDIS_SPIN_LOCK SpinLock
  871. );
  872. #undef NdisFreeSpinLock
  873. VOID
  874. NdisFreeSpinLock(
  875. IN PNDIS_SPIN_LOCK SpinLock
  876. );
  877. #undef NdisAcquireSpinLock
  878. VOID
  879. NdisAcquireSpinLock(
  880. IN PNDIS_SPIN_LOCK SpinLock
  881. );
  882. #undef NdisReleaseSpinLock
  883. VOID
  884. NdisReleaseSpinLock(
  885. IN PNDIS_SPIN_LOCK SpinLock
  886. );
  887. #undef NdisDprAcquireSpinLock
  888. VOID
  889. NdisDprAcquireSpinLock(
  890. IN PNDIS_SPIN_LOCK SpinLock
  891. );
  892. #undef NdisDprReleaseSpinLock
  893. VOID
  894. NdisDprReleaseSpinLock(
  895. IN PNDIS_SPIN_LOCK SpinLock
  896. );
  897. #undef NdisGetCurrentSystemTime
  898. VOID
  899. NdisGetCurrentSystemTime(
  900. IN PLARGE_INTEGER pCurrentTime
  901. );
  902. #undef NdisQueryBufferSafe
  903. VOID
  904. NdisQueryBufferSafe(
  905. IN PNDIS_BUFFER Buffer,
  906. OUT PVOID * VirtualAddress OPTIONAL,
  907. OUT PUINT Length,
  908. IN MM_PAGE_PRIORITY Priority
  909. );
  910. #undef NdisQueryBufferOffset
  911. VOID
  912. NdisQueryBufferOffset(
  913. IN PNDIS_BUFFER Buffer,
  914. OUT PUINT Offset,
  915. OUT PUINT Length
  916. );
  917. #undef NdisAdjustBufferLength
  918. VOID
  919. NdisAdjustBufferLength(
  920. IN PNDIS_BUFFER Buffer,
  921. IN UINT Length
  922. );
  923. #undef NdisUpdateSharedMemory
  924. VOID
  925. NdisUpdateSharedMemory(
  926. IN NDIS_HANDLE NdisAdapterHandle,
  927. IN ULONG Length,
  928. IN PVOID VirtualAddress,
  929. IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
  930. );
  931. #undef NdisFreePacketPool
  932. VOID
  933. NdisFreePacketPool(
  934. IN NDIS_HANDLE PoolHandle
  935. );
  936. #undef NdisFreePacket
  937. VOID
  938. NdisFreePacket(
  939. IN PNDIS_PACKET Packet
  940. );
  941. #undef NdisDprFreePacketNonInterlocked
  942. VOID
  943. NdisDprFreePacketNonInterlocked(
  944. IN PNDIS_PACKET Packet
  945. );
  946. #undef NdisDprFreePacket
  947. VOID
  948. NdisDprFreePacket(
  949. IN PNDIS_PACKET Packet
  950. );
  951. VOID
  952. FASTCALL
  953. ndisFreePacket(
  954. IN PNDIS_PACKET Packet,
  955. IN PNDIS_PKT_POOL Pool
  956. );
  957. #undef NdisAnsiStringToUnicodeString
  958. NDIS_STATUS
  959. NdisAnsiStringToUnicodeString(
  960. IN OUT PUNICODE_STRING DestinationString,
  961. IN PANSI_STRING SourceString
  962. );
  963. #undef NdisUnicodeStringToAnsiString
  964. NDIS_STATUS
  965. NdisUnicodeStringToAnsiString(
  966. IN OUT PANSI_STRING DestinationString,
  967. IN PUNICODE_STRING SourceString
  968. );
  969. #undef NdisCompareAnsiString
  970. BOOLEAN
  971. NdisCompareAnsiString(
  972. IN PANSI_STRING String1,
  973. IN PANSI_STRING String2,
  974. IN BOOLEAN CaseInSensitive
  975. );
  976. #undef NdisCompareUnicodeString
  977. BOOLEAN
  978. NdisCompareUnicodeString(
  979. IN PUNICODE_STRING String1,
  980. IN PUNICODE_STRING String2,
  981. IN BOOLEAN CaseInSensitive
  982. );
  983. #undef NdisUpcaseUnicodeString
  984. NDIS_STATUS
  985. NdisUpcaseUnicodeString(
  986. OUT PUNICODE_STRING DestinationString,
  987. IN PUNICODE_STRING SourceString
  988. );
  989. #undef NdisReset
  990. VOID
  991. NdisReset(
  992. OUT PNDIS_STATUS Status,
  993. IN NDIS_HANDLE NdisBindingHandle
  994. );
  995. #undef NdisRequest
  996. VOID
  997. NdisRequest(
  998. OUT PNDIS_STATUS Status,
  999. IN NDIS_HANDLE NdisBindingHandle,
  1000. IN PNDIS_REQUEST NdisRequest
  1001. );
  1002. #undef NdisTransferData
  1003. VOID
  1004. NdisTransferData(
  1005. OUT PNDIS_STATUS Status,
  1006. IN NDIS_HANDLE NdisBindingHandle,
  1007. IN NDIS_HANDLE MacReceiveContext,
  1008. IN UINT ByteOffset,
  1009. IN UINT BytesToTransfer,
  1010. IN OUT PNDIS_PACKET Packet,
  1011. OUT PUINT BytesTransferred
  1012. );
  1013. BOOLEAN
  1014. ndisVerifierInitialization(
  1015. VOID
  1016. );
  1017. BOOLEAN
  1018. ndisVerifierInjectResourceFailure (
  1019. IN BOOLEAN fDelayFailure
  1020. );
  1021. EXPORT
  1022. NDIS_STATUS
  1023. ndisVerifierAllocateMemory(
  1024. OUT PVOID * VirtualAddress,
  1025. IN UINT Length,
  1026. IN UINT MemoryFlags,
  1027. IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
  1028. );
  1029. EXPORT
  1030. NDIS_STATUS
  1031. ndisVerifierAllocateMemoryWithTag(
  1032. OUT PVOID * VirtualAddress,
  1033. IN UINT Length,
  1034. IN ULONG Tag
  1035. );
  1036. EXPORT
  1037. VOID
  1038. ndisVerifierAllocatePacketPool(
  1039. OUT PNDIS_STATUS Status,
  1040. OUT PNDIS_HANDLE PoolHandle,
  1041. IN UINT NumberOfDescriptors,
  1042. IN UINT ProtocolReservedLength
  1043. );
  1044. EXPORT
  1045. VOID
  1046. ndisVerifierAllocatePacketPoolEx(
  1047. OUT PNDIS_STATUS Status,
  1048. OUT PNDIS_HANDLE PoolHandle,
  1049. IN UINT NumberOfDescriptors,
  1050. IN UINT NumberOfOverflowDescriptors,
  1051. IN UINT ProtocolReservedLength
  1052. );
  1053. EXPORT
  1054. VOID
  1055. ndisVerifierFreePacketPool(
  1056. IN NDIS_HANDLE PoolHandle
  1057. );
  1058. NDIS_STATUS
  1059. ndisVerifierQueryMapRegisterCount(
  1060. IN NDIS_INTERFACE_TYPE BusType,
  1061. OUT PUINT MapRegisterCount
  1062. );
  1063. VOID
  1064. ndisFreePacketPool(
  1065. IN NDIS_HANDLE PoolHandle,
  1066. IN BOOLEAN Verify
  1067. );
  1068. #if TRACK_MEMORY
  1069. extern
  1070. PVOID
  1071. AllocateM(
  1072. IN UINT Size,
  1073. IN ULONG ModLine,
  1074. IN ULONG Tag
  1075. );
  1076. extern
  1077. VOID
  1078. FreeM(
  1079. IN PVOID MemPtr
  1080. );
  1081. #endif
  1082. VOID
  1083. ndisMNotifyMachineName(
  1084. IN PNDIS_MINIPORT_BLOCK Miniport,
  1085. IN PNDIS_STRING MachineName OPTIONAL
  1086. );
  1087. VOID
  1088. ndisPowerStateCallback(
  1089. IN PVOID CallBackContext,
  1090. IN PVOID Argument1,
  1091. IN PVOID Argument2
  1092. );
  1093. VOID
  1094. ndisNotifyMiniports(
  1095. IN PNDIS_MINIPORT_BLOCK Miniport OPTIONAL,
  1096. IN NDIS_DEVICE_PNP_EVENT DevicePnPEvent,
  1097. IN PVOID Buffer,
  1098. IN ULONG Length
  1099. );
  1100. PNDIS_MINIPORT_BLOCK
  1101. ndisReferenceNextUnprocessedMiniport(
  1102. IN PNDIS_M_DRIVER_BLOCK MiniBlock
  1103. );
  1104. VOID
  1105. ndisUnprocessAllMiniports(
  1106. IN PNDIS_M_DRIVER_BLOCK MiniBlock
  1107. );
  1108. #undef NdisSetPacketCancelId
  1109. VOID
  1110. NdisSetPacketCancelId(
  1111. IN PNDIS_PACKET Packet,
  1112. IN PVOID CancelId
  1113. );
  1114. #undef NdisGetPacketCancelId
  1115. PVOID
  1116. NdisGetPacketCancelId(
  1117. IN PNDIS_PACKET Packet
  1118. );
  1119. VOID
  1120. ndisSetupWmiNode(
  1121. IN PNDIS_MINIPORT_BLOCK Miniport,
  1122. IN PUNICODE_STRING InstanceName,
  1123. IN ULONG DataBlockSize,
  1124. IN PVOID pGuid,
  1125. IN OUT PWNODE_SINGLE_INSTANCE * pwnode
  1126. );
  1127. BOOLEAN
  1128. FASTCALL
  1129. ndisMStartSendPacketsSG(
  1130. IN PNDIS_MINIPORT_BLOCK Miniport
  1131. );
  1132. NDIS_STATUS
  1133. ndisMSendSG(
  1134. IN NDIS_HANDLE NdisBindingHandle,
  1135. IN PNDIS_PACKET Packet
  1136. );
  1137. BOOLEAN
  1138. FASTCALL
  1139. ndisMStartSendsSG(
  1140. IN PNDIS_MINIPORT_BLOCK Miniport
  1141. );
  1142. VOID
  1143. ndisMSendPacketsSG(
  1144. IN NDIS_HANDLE NdisBindingHandle,
  1145. IN PPNDIS_PACKET PacketArray,
  1146. IN UINT NumberOfPackets
  1147. );
  1148. VOID
  1149. ndisMSendCompleteSG(
  1150. IN NDIS_HANDLE MiniportAdapterHandle,
  1151. IN PNDIS_PACKET Packet,
  1152. IN NDIS_STATUS Status
  1153. );
  1154. VOID
  1155. FASTCALL
  1156. ndisMAllocSGListS(
  1157. IN PNDIS_MINIPORT_BLOCK Miniport,
  1158. IN PNDIS_PACKET Packet
  1159. );
  1160. VOID
  1161. ndisMProcessSGListS(
  1162. IN PDEVICE_OBJECT pDO,
  1163. IN PIRP pIrp,
  1164. IN PSCATTER_GATHER_LIST pSGL,
  1165. IN PVOID Context
  1166. );
  1167. VOID
  1168. ndisDereferenceDmaAdapter(
  1169. IN PNDIS_MINIPORT_BLOCK Miniport
  1170. );
  1171. VOID
  1172. ndisDereferenceAfNotification(
  1173. IN PNDIS_OPEN_BLOCK Open
  1174. );
  1175. VOID
  1176. ndisMSetIndicatePacketHandler(
  1177. IN PNDIS_MINIPORT_BLOCK Miniport
  1178. );
  1179. VOID
  1180. ndisVerifierFreeMemory(
  1181. IN PVOID VirtualAddress,
  1182. IN UINT Length,
  1183. IN UINT MemoryFlags
  1184. );
  1185. VOID
  1186. ndisUpdateCheckForLoopbackFlag(
  1187. IN PNDIS_MINIPORT_BLOCK Miniport
  1188. );
  1189. BOOLEAN
  1190. ndisReferenceOpenByHandle(
  1191. IN PNDIS_OPEN_BLOCK Open,
  1192. IN BOOLEAN fRef
  1193. );
  1194. BOOLEAN
  1195. ndisRemoveOpenFromGlobalList(
  1196. IN PNDIS_OPEN_BLOCK Open
  1197. );
  1198. NDIS_STATUS
  1199. ndisMRegisterInterruptCommon(
  1200. OUT PNDIS_MINIPORT_INTERRUPT Interrupt,
  1201. IN NDIS_HANDLE MiniportAdapterHandle,
  1202. IN UINT InterruptVector,
  1203. IN UINT InterruptLevel,
  1204. IN BOOLEAN RequestIsr,
  1205. IN BOOLEAN SharedInterrupt,
  1206. IN NDIS_INTERRUPT_MODE InterruptMode
  1207. );
  1208. VOID
  1209. ndisMDeregisterInterruptCommon(
  1210. IN PNDIS_MINIPORT_INTERRUPT MiniportInterrupt
  1211. );
  1212. NTSTATUS
  1213. CreateDeviceDriverSecurityDescriptor(
  1214. IN PVOID DeviceOrDriverObject,
  1215. IN BOOLEAN AddNetConfigOps,
  1216. IN PACL AclToAdd OPTIONAL
  1217. );
  1218. NTSTATUS
  1219. ndisAddUsersAce(
  1220. IN PACL Dacl,
  1221. OUT PACL *NewAcl
  1222. );
  1223. NTSTATUS
  1224. ndisCreateGenericSD(
  1225. PACL Acl,
  1226. PCHAR AccessSecurityDescriptor
  1227. );
  1228. PACL
  1229. ndisCreateAcl(
  1230. BOOLEAN Admins,
  1231. BOOLEAN LocalSystem,
  1232. BOOLEAN LocalService,
  1233. BOOLEAN NetworkService,
  1234. BOOLEAN NetConfigOps,
  1235. BOOLEAN Users,
  1236. ACCESS_MASK AccessMask
  1237. );
  1238. NDIS_STATUS
  1239. ndisQueryStatisticsOids(
  1240. IN PNDIS_MINIPORT_BLOCK Miniport,
  1241. IN PNDIS_USER_OPEN_CONTEXT OpenContext,
  1242. IN PNDIS_OID OidArray,
  1243. IN UINT OidCount,
  1244. IN PUCHAR Buffer,
  1245. IN ULONG BufferLength,
  1246. IN PULONG pBytesWritten,
  1247. IN BOOLEAN AlignOutput
  1248. );