Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygentdikrnl.h
Go to the documentation of this file.
00001 /* 00002 * tdikrnl.h 00003 * 00004 * TDI kernel mode definitions 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __TDIKRNL_H 00024 #define __TDIKRNL_H 00025 00026 #include "tdi.h" 00027 00028 #ifdef __cplusplus 00029 extern "C" { 00030 #endif 00031 00032 #if defined(_TDI_) 00033 #define TDIKRNLAPI 00034 #else 00035 #define TDIKRNLAPI DECLSPEC_IMPORT 00036 #endif 00037 00038 00039 typedef struct _TDI_REQUEST_KERNEL { 00040 ULONG RequestFlags; 00041 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 00042 PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; 00043 PVOID RequestSpecific; 00044 } TDI_REQUEST_KERNEL, *PTDI_REQUEST_KERNEL; 00045 00046 /* Request codes */ 00047 #define TDI_ASSOCIATE_ADDRESS 0x01 00048 #define TDI_DISASSOCIATE_ADDRESS 0x02 00049 #define TDI_CONNECT 0x03 00050 #define TDI_LISTEN 0x04 00051 #define TDI_ACCEPT 0x05 00052 #define TDI_DISCONNECT 0x06 00053 #define TDI_SEND 0x07 00054 #define TDI_RECEIVE 0x08 00055 #define TDI_SEND_DATAGRAM 0x09 00056 #define TDI_RECEIVE_DATAGRAM 0x0A 00057 #define TDI_SET_EVENT_HANDLER 0x0B 00058 #define TDI_QUERY_INFORMATION 0x0C 00059 #define TDI_SET_INFORMATION 0x0D 00060 #define TDI_ACTION 0x0E 00061 00062 #define TDI_DIRECT_SEND 0x27 00063 #define TDI_DIRECT_SEND_DATAGRAM 0x29 00064 00065 #define TDI_TRANSPORT_ADDRESS_FILE 1 00066 #define TDI_CONNECTION_FILE 2 00067 #define TDI_CONTROL_CHANNEL_FILE 3 00068 00069 /* Internal TDI IOCTLS */ 00070 #define IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER _TDI_CONTROL_CODE(0x80, METHOD_NEITHER) 00071 #define IOCTL_TDI_QUERY_DIRECT_SENDDG_HANDLER _TDI_CONTROL_CODE(0x81, METHOD_NEITHER) 00072 00073 /* TdiAssociateAddress */ 00074 typedef struct _TDI_REQUEST_KERNEL_ASSOCIATE { 00075 HANDLE AddressHandle; 00076 } TDI_REQUEST_KERNEL_ASSOCIATE, *PTDI_REQUEST_KERNEL_ASSOCIATE; 00077 00078 /* TdiDisassociateAddress */ 00079 typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISASSOCIATE, 00080 *PTDI_REQUEST_KERNEL_DISASSOCIATE; 00081 00082 /* TdiAccept */ 00083 typedef struct _TDI_REQUEST_KERNEL_ACCEPT { 00084 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 00085 PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; 00086 } TDI_REQUEST_KERNEL_ACCEPT, *PTDI_REQUEST_KERNEL_ACCEPT; 00087 00088 /* TdiConnect */ 00089 typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_CONNECT, 00090 *PTDI_REQUEST_KERNEL_CONNECT; 00091 00092 /* TdiDisconnect */ 00093 typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISCONNECT, 00094 *PTDI_REQUEST_KERNEL_DISCONNECT; 00095 00096 /* TdiListen */ 00097 typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_LISTEN, 00098 *PTDI_REQUEST_KERNEL_LISTEN; 00099 00100 /* TdiReceive */ 00101 typedef struct _TDI_REQUEST_KERNEL_RECEIVE { 00102 ULONG ReceiveLength; 00103 ULONG ReceiveFlags; 00104 } TDI_REQUEST_KERNEL_RECEIVE, *PTDI_REQUEST_KERNEL_RECEIVE; 00105 00106 /* TdiReceiveDatagram */ 00107 typedef struct _TDI_REQUEST_KERNEL_RECEIVEDG { 00108 ULONG ReceiveLength; 00109 PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation; 00110 PTDI_CONNECTION_INFORMATION ReturnDatagramInformation; 00111 ULONG ReceiveFlags; 00112 } TDI_REQUEST_KERNEL_RECEIVEDG, *PTDI_REQUEST_KERNEL_RECEIVEDG; 00113 00114 /* TdiSend */ 00115 typedef struct _TDI_REQUEST_KERNEL_SEND { 00116 ULONG SendLength; 00117 ULONG SendFlags; 00118 } TDI_REQUEST_KERNEL_SEND, *PTDI_REQUEST_KERNEL_SEND; 00119 00120 /* TdiSendDatagram */ 00121 typedef struct _TDI_REQUEST_KERNEL_SENDDG { 00122 ULONG SendLength; 00123 PTDI_CONNECTION_INFORMATION SendDatagramInformation; 00124 } TDI_REQUEST_KERNEL_SENDDG, *PTDI_REQUEST_KERNEL_SENDDG; 00125 00126 /* TdiSetEventHandler */ 00127 typedef struct _TDI_REQUEST_KERNEL_SET_EVENT { 00128 LONG EventType; 00129 PVOID EventHandler; 00130 PVOID EventContext; 00131 } TDI_REQUEST_KERNEL_SET_EVENT, *PTDI_REQUEST_KERNEL_SET_EVENT; 00132 00133 /* TdiQueryInformation */ 00134 typedef struct _TDI_REQUEST_KERNEL_QUERY_INFO { 00135 LONG QueryType; 00136 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 00137 } TDI_REQUEST_KERNEL_QUERY_INFORMATION, *PTDI_REQUEST_KERNEL_QUERY_INFORMATION; 00138 00139 /* TdiSetInformation */ 00140 typedef struct _TDI_REQUEST_KERNEL_SET_INFO { 00141 LONG SetType; 00142 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 00143 } TDI_REQUEST_KERNEL_SET_INFORMATION, *PTDI_REQUEST_KERNEL_SET_INFORMATION; 00144 00145 /* Event types */ 00146 #define TDI_EVENT_CONNECT 0 00147 #define TDI_EVENT_DISCONNECT 1 00148 #define TDI_EVENT_ERROR 2 00149 #define TDI_EVENT_RECEIVE 3 00150 #define TDI_EVENT_RECEIVE_DATAGRAM 4 00151 #define TDI_EVENT_RECEIVE_EXPEDITED 5 00152 #define TDI_EVENT_SEND_POSSIBLE 6 00153 #define TDI_EVENT_CHAINED_RECEIVE 7 00154 #define TDI_EVENT_CHAINED_RECEIVE_DATAGRAM 8 00155 #define TDI_EVENT_CHAINED_RECEIVE_EXPEDITED 9 00156 #define TDI_EVENT_ERROR_EX 10 00157 00158 typedef NTSTATUS 00159 (NTAPI *PTDI_IND_CONNECT)( 00160 IN PVOID TdiEventContext, 00161 IN LONG RemoteAddressLength, 00162 IN PVOID RemoteAddress, 00163 IN LONG UserDataLength, 00164 IN PVOID UserData, 00165 IN LONG OptionsLength, 00166 IN PVOID Options, 00167 OUT CONNECTION_CONTEXT *ConnectionContext, 00168 OUT PIRP *AcceptIrp); 00169 00170 TDIKRNLAPI 00171 NTSTATUS 00172 NTAPI 00173 TdiDefaultConnectHandler( 00174 IN PVOID TdiEventContext, 00175 IN LONG RemoteAddressLength, 00176 IN PVOID RemoteAddress, 00177 IN LONG UserDataLength, 00178 IN PVOID UserData, 00179 IN LONG OptionsLength, 00180 IN PVOID Options, 00181 OUT CONNECTION_CONTEXT *ConnectionContext, 00182 OUT PIRP *AcceptIrp); 00183 00184 typedef NTSTATUS 00185 (NTAPI *PTDI_IND_DISCONNECT)( 00186 IN PVOID TdiEventContext, 00187 IN CONNECTION_CONTEXT ConnectionContext, 00188 IN LONG DisconnectDataLength, 00189 IN PVOID DisconnectData, 00190 IN LONG DisconnectInformationLength, 00191 IN PVOID DisconnectInformation, 00192 IN ULONG DisconnectFlags); 00193 00194 TDIKRNLAPI 00195 NTSTATUS 00196 NTAPI 00197 TdiDefaultDisconnectHandler( 00198 IN PVOID TdiEventContext, 00199 IN CONNECTION_CONTEXT ConnectionContext, 00200 IN LONG DisconnectDataLength, 00201 IN PVOID DisconnectData, 00202 IN LONG DisconnectInformationLength, 00203 IN PVOID DisconnectInformation, 00204 IN ULONG DisconnectFlags); 00205 00206 typedef NTSTATUS 00207 (NTAPI *PTDI_IND_ERROR)( 00208 IN PVOID TdiEventContext, 00209 IN NTSTATUS Status); 00210 00211 typedef NTSTATUS 00212 (NTAPI *PTDI_IND_ERROR_EX)( 00213 IN PVOID TdiEventContext, 00214 IN NTSTATUS Status, 00215 IN PVOID Buffer); 00216 00217 TDIKRNLAPI 00218 NTSTATUS 00219 NTAPI 00220 TdiDefaultErrorHandler( 00221 IN PVOID TdiEventContext, 00222 IN NTSTATUS Status); 00223 00224 typedef NTSTATUS 00225 (NTAPI *PTDI_IND_RECEIVE)( 00226 IN PVOID TdiEventContext, 00227 IN CONNECTION_CONTEXT ConnectionContext, 00228 IN ULONG ReceiveFlags, 00229 IN ULONG BytesIndicated, 00230 IN ULONG BytesAvailable, 00231 OUT ULONG *BytesTaken, 00232 IN PVOID Tsdu, 00233 OUT PIRP *IoRequestPacket); 00234 00235 TDIKRNLAPI 00236 NTSTATUS 00237 NTAPI 00238 TdiDefaultReceiveHandler( 00239 IN PVOID TdiEventContext, 00240 IN CONNECTION_CONTEXT ConnectionContext, 00241 IN ULONG ReceiveFlags, 00242 IN ULONG BytesIndicated, 00243 IN ULONG BytesAvailable, 00244 OUT ULONG *BytesTaken, 00245 IN PVOID Tsdu, 00246 OUT PIRP *IoRequestPacket); 00247 00248 typedef NTSTATUS 00249 (NTAPI *PTDI_IND_RECEIVE_DATAGRAM)( 00250 IN PVOID TdiEventContext, 00251 IN LONG SourceAddressLength, 00252 IN PVOID SourceAddress, 00253 IN LONG OptionsLength, 00254 IN PVOID Options, 00255 IN ULONG ReceiveDatagramFlags, 00256 IN ULONG BytesIndicated, 00257 IN ULONG BytesAvailable, 00258 OUT ULONG *BytesTaken, 00259 IN PVOID Tsdu, 00260 OUT PIRP *IoRequestPacket); 00261 00262 TDIKRNLAPI 00263 NTSTATUS NTAPI 00264 TdiDefaultRcvDatagramHandler( 00265 IN PVOID TdiEventContext, 00266 IN LONG SourceAddressLength, 00267 IN PVOID SourceAddress, 00268 IN LONG OptionsLength, 00269 IN PVOID Options, 00270 IN ULONG ReceiveDatagramFlags, 00271 IN ULONG BytesIndicated, 00272 IN ULONG BytesAvailable, 00273 OUT ULONG *BytesTaken, 00274 IN PVOID Tsdu, 00275 OUT PIRP *IoRequestPacket); 00276 00277 typedef NTSTATUS 00278 (NTAPI *PTDI_IND_RECEIVE_EXPEDITED)( 00279 IN PVOID TdiEventContext, 00280 IN CONNECTION_CONTEXT ConnectionContext, 00281 IN ULONG ReceiveFlags, 00282 IN ULONG BytesIndicated, 00283 IN ULONG BytesAvailable, 00284 OUT ULONG *BytesTaken, 00285 IN PVOID Tsdu, 00286 OUT PIRP *IoRequestPacket); 00287 00288 TDIKRNLAPI 00289 NTSTATUS 00290 NTAPI 00291 TdiDefaultRcvExpeditedHandler( 00292 IN PVOID TdiEventContext, 00293 IN CONNECTION_CONTEXT ConnectionContext, 00294 IN ULONG ReceiveFlags, 00295 IN ULONG BytesIndicated, 00296 IN ULONG BytesAvailable, 00297 OUT ULONG *BytesTaken, 00298 IN PVOID Tsdu, 00299 OUT PIRP *IoRequestPacket); 00300 00301 typedef NTSTATUS 00302 (NTAPI *PTDI_IND_CHAINED_RECEIVE)( 00303 IN PVOID TdiEventContext, 00304 IN CONNECTION_CONTEXT ConnectionContext, 00305 IN ULONG ReceiveFlags, 00306 IN ULONG ReceiveLength, 00307 IN ULONG StartingOffset, 00308 IN PMDL Tsdu, 00309 IN PVOID TsduDescriptor); 00310 00311 TDIKRNLAPI 00312 NTSTATUS 00313 NTAPI 00314 TdiDefaultChainedReceiveHandler( 00315 IN PVOID TdiEventContext, 00316 IN CONNECTION_CONTEXT ConnectionContext, 00317 IN ULONG ReceiveFlags, 00318 IN ULONG ReceiveLength, 00319 IN ULONG StartingOffset, 00320 IN PMDL Tsdu, 00321 IN PVOID TsduDescriptor); 00322 00323 typedef NTSTATUS 00324 (NTAPI *PTDI_IND_CHAINED_RECEIVE_DATAGRAM)( 00325 IN PVOID TdiEventContext, 00326 IN LONG SourceAddressLength, 00327 IN PVOID SourceAddress, 00328 IN LONG OptionsLength, 00329 IN PVOID Options, 00330 IN ULONG ReceiveDatagramFlags, 00331 IN ULONG ReceiveDatagramLength, 00332 IN ULONG StartingOffset, 00333 IN PMDL Tsdu, 00334 IN PVOID TsduDescriptor); 00335 00336 TDIKRNLAPI 00337 NTSTATUS 00338 NTAPI 00339 TdiDefaultChainedRcvDatagramHandler( 00340 IN PVOID TdiEventContext, 00341 IN LONG SourceAddressLength, 00342 IN PVOID SourceAddress, 00343 IN LONG OptionsLength, 00344 IN PVOID Options, 00345 IN ULONG ReceiveDatagramFlags, 00346 IN ULONG ReceiveDatagramLength, 00347 IN ULONG StartingOffset, 00348 IN PMDL Tsdu, 00349 IN PVOID TsduDescriptor); 00350 00351 typedef NTSTATUS 00352 (NTAPI *PTDI_IND_CHAINED_RECEIVE_EXPEDITED)( 00353 IN PVOID TdiEventContext, 00354 IN CONNECTION_CONTEXT ConnectionContext, 00355 IN ULONG ReceiveFlags, 00356 IN ULONG ReceiveLength, 00357 IN ULONG StartingOffset, 00358 IN PMDL Tsdu, 00359 IN PVOID TsduDescriptor); 00360 00361 TDIKRNLAPI 00362 NTSTATUS 00363 NTAPI 00364 TdiDefaultChainedRcvExpeditedHandler( 00365 IN PVOID TdiEventContext, 00366 IN CONNECTION_CONTEXT ConnectionContext, 00367 IN ULONG ReceiveFlags, 00368 IN ULONG ReceiveLength, 00369 IN ULONG StartingOffset, 00370 IN PMDL Tsdu, 00371 IN PVOID TsduDescriptor); 00372 00373 typedef NTSTATUS 00374 (NTAPI *PTDI_IND_SEND_POSSIBLE)( 00375 IN PVOID TdiEventContext, 00376 IN PVOID ConnectionContext, 00377 IN ULONG BytesAvailable); 00378 00379 TDIKRNLAPI 00380 NTSTATUS 00381 NTAPI 00382 TdiDefaultSendPossibleHandler( 00383 IN PVOID TdiEventContext, 00384 IN PVOID ConnectionContext, 00385 IN ULONG BytesAvailable); 00386 00387 00388 00389 /* Macros and functions to build IRPs */ 00390 00391 #define TdiBuildBaseIrp( \ 00392 bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor) \ 00393 { \ 00394 bIrpSp->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL; \ 00395 bIrpSp->MinorFunction = (bMinor); \ 00396 bIrpSp->DeviceObject = (bDevObj); \ 00397 bIrpSp->FileObject = (bFileObj); \ 00398 if (bCompRoutine) \ 00399 { \ 00400 IoSetCompletionRoutine(bIrp, bCompRoutine, bContxt, TRUE, TRUE, TRUE);\ 00401 } \ 00402 else \ 00403 IoSetCompletionRoutine(bIrp, NULL, NULL, FALSE, FALSE, FALSE); \ 00404 } 00405 00406 /* 00407 * VOID 00408 * TdiBuildAccept( 00409 * IN PIRP Irp, 00410 * IN PDEVICE_OBJECT DevObj, 00411 * IN PFILE_OBJECT FileObj, 00412 * IN PVOID CompRoutine, 00413 * IN PVOID Contxt, 00414 * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, 00415 * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); 00416 */ 00417 #define TdiBuildAccept( \ 00418 Irp, DevObj, FileObj, CompRoutine, Contxt, \ 00419 RequestConnectionInfo, ReturnConnectionInfo) \ 00420 { \ 00421 PTDI_REQUEST_KERNEL_ACCEPT _Request; \ 00422 PIO_STACK_LOCATION _IrpSp; \ 00423 \ 00424 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00425 \ 00426 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00427 Contxt, _IrpSp, TDI_ACCEPT); \ 00428 \ 00429 _Request = (PTDI_REQUEST_KERNEL_ACCEPT)&_IrpSp->Parameters; \ 00430 _Request->RequestConnectionInformation = (RequestConnectionInfo); \ 00431 _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \ 00432 } 00433 00434 /* 00435 * VOID 00436 * TdiBuildAction( 00437 * IN PIRP Irp, 00438 * IN PDEVICE_OBJECT DevObj, 00439 * IN PFILE_OBJECT FileObj, 00440 * IN PVOID CompRoutine, 00441 * IN PVOID Contxt, 00442 * IN PMDL MdlAddr); 00443 */ 00444 #define TdiBuildAction( \ 00445 Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr) \ 00446 { \ 00447 PIO_STACK_LOCATION _IrpSp; \ 00448 \ 00449 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00450 \ 00451 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00452 Contxt, _IrpSp, TDI_ACTION); \ 00453 \ 00454 (Irp)->MdlAddress = (MdlAddr); \ 00455 } 00456 00457 /* 00458 * VOID 00459 * TdiBuildAssociateAddress( 00460 * IN PIRP Irp, 00461 * IN PDEVICE_OBJECT DevObj, 00462 * IN PFILE_OBJECT FileObj, 00463 * IN PVOID CompRoutine, 00464 * IN PVOID Contxt, 00465 * IN HANDLE AddrHandle); 00466 */ 00467 #define TdiBuildAssociateAddress( \ 00468 Irp, DevObj, FileObj, CompRoutine, Contxt, AddrHandle) \ 00469 { \ 00470 PTDI_REQUEST_KERNEL_ASSOCIATE _Request; \ 00471 PIO_STACK_LOCATION _IrpSp; \ 00472 \ 00473 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00474 \ 00475 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00476 Contxt, _IrpSp, TDI_ASSOCIATE_ADDRESS); \ 00477 \ 00478 _Request = (PTDI_REQUEST_KERNEL_ASSOCIATE)&_IrpSp->Parameters; \ 00479 _Request->AddressHandle = (HANDLE)(AddrHandle); \ 00480 } 00481 00482 /* 00483 * VOID 00484 * TdiBuildConnect( 00485 * IN PIRP Irp, 00486 * IN PDEVICE_OBJECT DevObj, 00487 * IN PFILE_OBJECT FileObj, 00488 * IN PVOID CompRoutine, 00489 * IN PVOID Contxt, 00490 * IN PLARGE_INTEGER Time, 00491 * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, 00492 * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); 00493 */ 00494 #define TdiBuildConnect( \ 00495 Irp, DevObj, FileObj, CompRoutine, Contxt, \ 00496 Time, RequestConnectionInfo, ReturnConnectionInfo) \ 00497 { \ 00498 PTDI_REQUEST_KERNEL _Request; \ 00499 PIO_STACK_LOCATION _IrpSp; \ 00500 \ 00501 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00502 \ 00503 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00504 Contxt, _IrpSp, TDI_CONNECT); \ 00505 \ 00506 _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \ 00507 _Request->RequestConnectionInformation = (RequestConnectionInfo); \ 00508 _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \ 00509 _Request->RequestSpecific = (PVOID)(Time); \ 00510 } 00511 00512 /* 00513 * VOID 00514 * TdiBuildDisassociateAddress( 00515 * IN PIRP Irp, 00516 * IN PDEVICE_OBJECT DevObj, 00517 * IN PFILE_OBJECT FileObj, 00518 * IN PVOID CompRoutine, 00519 * IN PVOID Contxt); 00520 */ 00521 #define TdiBuildDisassociateAddress( \ 00522 Irp, DevObj, FileObj, CompRoutine, Contxt) \ 00523 { \ 00524 PIO_STACK_LOCATION _IrpSp; \ 00525 \ 00526 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00527 \ 00528 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00529 Contxt, _IrpSp, TDI_DISASSOCIATE_ADDRESS); \ 00530 } 00531 00532 /* 00533 * VOID 00534 * TdiBuildDisconnect( 00535 * IN PIRP Irp, 00536 * IN PDEVICE_OBJECT DevObj, 00537 * IN PFILE_OBJECT FileObj, 00538 * IN PVOID CompRoutine, 00539 * IN PVOID Contxt, 00540 * IN PLARGE_INTEGER Time, 00541 * IN PULONG Flags, 00542 * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, 00543 * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); 00544 */ 00545 #define TdiBuildDisconnect( \ 00546 Irp, DevObj, FileObj, CompRoutine, Contxt, Time, \ 00547 Flags, RequestConnectionInfo, ReturnConnectionInfo) \ 00548 { \ 00549 PTDI_REQUEST_KERNEL _Request; \ 00550 PIO_STACK_LOCATION _IrpSp; \ 00551 \ 00552 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00553 \ 00554 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00555 Contxt, _IrpSp, TDI_DISCONNECT); \ 00556 \ 00557 _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \ 00558 _Request->RequestConnectionInformation = (RequestConnectionInfo); \ 00559 _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \ 00560 _Request->RequestSpecific = (PVOID)(Time); \ 00561 _Request->RequestFlags = (Flags); \ 00562 } 00563 00564 /* 00565 * PIRP 00566 * TdiBuildInternalDeviceControlIrp( 00567 * IN CCHAR IrpSubFunction, 00568 * IN PDEVICE_OBJECT DeviceObject, 00569 * IN PFILE_OBJECT FileObject, 00570 * IN PKEVENT Event, 00571 * IN PIO_STATUS_BLOCK IoStatusBlock); 00572 */ 00573 #define TdiBuildInternalDeviceControlIrp( \ 00574 IrpSubFunction, DeviceObject, \ 00575 FileObject, Event, IoStatusBlock) \ 00576 IoBuildDeviceIoControlRequest( \ 00577 IrpSubFunction, DeviceObject, \ 00578 NULL, 0, NULL, 0, \ 00579 TRUE, Event, IoStatusBlock) 00580 00581 /* 00582 * VOID 00583 * TdiBuildListen( 00584 * IN PIRP Irp, 00585 * IN PDEVICE_OBJECT DevObj, 00586 * IN PFILE_OBJECT FileObj, 00587 * IN PVOID CompRoutine, 00588 * IN PVOID Contxt, 00589 * IN ULONG Flags, 00590 * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, 00591 * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); 00592 */ 00593 #define TdiBuildListen( \ 00594 Irp, DevObj, FileObj, CompRoutine, Contxt, \ 00595 Flags, RequestConnectionInfo, ReturnConnectionInfo) \ 00596 { \ 00597 PTDI_REQUEST_KERNEL _Request; \ 00598 PIO_STACK_LOCATION _IrpSp; \ 00599 \ 00600 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00601 \ 00602 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00603 Contxt, _IrpSp, TDI_LISTEN); \ 00604 \ 00605 _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \ 00606 _Request->RequestConnectionInformation = (RequestConnectionInfo); \ 00607 _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \ 00608 _Request->RequestFlags = (Flags); \ 00609 } 00610 00611 TDIKRNLAPI 00612 VOID 00613 NTAPI 00614 TdiBuildNetbiosAddress( 00615 IN PUCHAR NetbiosName, 00616 IN BOOLEAN IsGroupName, 00617 IN OUT PTA_NETBIOS_ADDRESS NetworkName); 00618 00619 TDIKRNLAPI 00620 NTSTATUS 00621 NTAPI 00622 TdiBuildNetbiosAddressEa( 00623 IN PUCHAR Buffer, 00624 IN BOOLEAN IsGroupName, 00625 IN PUCHAR NetbiosName); 00626 00627 /* 00628 * VOID 00629 * TdiBuildQueryInformation( 00630 * IN PIRP Irp, 00631 * IN PDEVICE_OBJECT DevObj, 00632 * IN PFILE_OBJECT FileObj, 00633 * IN PVOID CompRoutine, 00634 * IN PVOID Contxt, 00635 * IN UINT QType, 00636 * IN PMDL MdlAddr); 00637 */ 00638 #define TdiBuildQueryInformation( \ 00639 Irp, DevObj, FileObj, CompRoutine, Contxt, QType, MdlAddr) \ 00640 { \ 00641 PTDI_REQUEST_KERNEL_QUERY_INFORMATION _Request; \ 00642 PIO_STACK_LOCATION _IrpSp; \ 00643 \ 00644 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00645 \ 00646 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00647 Contxt, _IrpSp, TDI_QUERY_INFORMATION); \ 00648 \ 00649 _Request = (PTDI_REQUEST_KERNEL_QUERY_INFORMATION)&_IrpSp->Parameters; \ 00650 _Request->RequestConnectionInformation = NULL; \ 00651 _Request->QueryType = (ULONG)(QType); \ 00652 (Irp)->MdlAddress = (MdlAddr); \ 00653 } 00654 00655 /* 00656 * VOID 00657 * TdiBuildReceive( 00658 * IN PIRP Irp, 00659 * IN PDEVICE_OBJECT DevObj, 00660 * IN PFILE_OBJECT FileObj, 00661 * IN PVOID CompRoutine, 00662 * IN PVOID Contxt, 00663 * IN PMDL MdlAddr, 00664 * IN ULONG InFlags, 00665 * IN ULONG ReceiveLen); 00666 */ 00667 #define TdiBuildReceive( \ 00668 Irp, DevObj, FileObj, CompRoutine, Contxt, \ 00669 MdlAddr, InFlags, ReceiveLen) \ 00670 { \ 00671 PTDI_REQUEST_KERNEL_RECEIVE _Request; \ 00672 PIO_STACK_LOCATION _IrpSp; \ 00673 \ 00674 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00675 \ 00676 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00677 Contxt, _IrpSp, TDI_RECEIVE); \ 00678 \ 00679 _Request = (PTDI_REQUEST_KERNEL_RECEIVE)&_IrpSp->Parameters; \ 00680 _Request->ReceiveFlags = (InFlags); \ 00681 _Request->ReceiveLength = (ReceiveLen); \ 00682 (Irp)->MdlAddress = (MdlAddr); \ 00683 } 00684 00685 /* 00686 * VOID 00687 * TdiBuildReceiveDatagram( 00688 * IN PIRP Irp, 00689 * IN PDEVICE_OBJECT DevObj, 00690 * IN PFILE_OBJECT FileObj, 00691 * IN PVOID CompRoutine, 00692 * IN PVOID Contxt, 00693 * IN PMDL MdlAddr, 00694 * IN ULONG ReceiveLen, 00695 * IN PTDI_CONNECTION_INFORMATION ReceiveDatagramInfo, 00696 * OUT PTDI_CONNECTION_INFORMATION ReturnInfo, 00697 * ULONG InFlags); 00698 */ 00699 #define TdiBuildReceiveDatagram( \ 00700 Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr, \ 00701 ReceiveLen, ReceiveDatagramInfo, ReturnInfo, InFlags) \ 00702 { \ 00703 PTDI_REQUEST_KERNEL_RECEIVEDG _Request; \ 00704 PIO_STACK_LOCATION _IrpSp; \ 00705 \ 00706 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00707 \ 00708 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00709 Contxt, _IrpSp, TDI_RECEIVE_DATAGRAM); \ 00710 \ 00711 _Request = (PTDI_REQUEST_KERNEL_RECEIVEDG)&_IrpSp->Parameters; \ 00712 _Request->ReceiveDatagramInformation = (ReceiveDatagramInfo); \ 00713 _Request->ReturnDatagramInformation = (ReturnInfo); \ 00714 _Request->ReceiveLength = (ReceiveLen); \ 00715 _Request->ReceiveFlags = (InFlags); \ 00716 (Irp)->MdlAddress = (MdlAddr); \ 00717 } 00718 00719 /* 00720 * VOID 00721 * TdiBuildSend( 00722 * IN PIRP Irp, 00723 * IN PDEVICE_OBJECT DevObj, 00724 * IN PFILE_OBJECT FileObj, 00725 * IN PVOID CompRoutine, 00726 * IN PVOID Contxt, 00727 * IN PMDL MdlAddr, 00728 * IN ULONG InFlags, 00729 * IN ULONG SendLen); 00730 */ 00731 #define TdiBuildSend( \ 00732 Irp, DevObj, FileObj, CompRoutine, Contxt, \ 00733 MdlAddr, InFlags, SendLen) \ 00734 { \ 00735 PTDI_REQUEST_KERNEL_SEND _Request; \ 00736 PIO_STACK_LOCATION _IrpSp; \ 00737 \ 00738 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00739 \ 00740 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00741 Contxt, _IrpSp, TDI_SEND); \ 00742 \ 00743 _Request = (PTDI_REQUEST_KERNEL_SEND)&_IrpSp->Parameters; \ 00744 _Request->SendFlags = (InFlags); \ 00745 _Request->SendLength = (SendLen); \ 00746 (Irp)->MdlAddress = (MdlAddr); \ 00747 } 00748 00749 /* 00750 * VOID 00751 * TdiBuildSendDatagram( 00752 * IN PIRP Irp, 00753 * IN PDEVICE_OBJECT DevObj, 00754 * IN PFILE_OBJECT FileObj, 00755 * IN PVOID CompRoutine, 00756 * IN PVOID Contxt, 00757 * IN PMDL MdlAddr, 00758 * IN ULONG SendLen, 00759 * IN PTDI_CONNECTION_INFORMATION SendDatagramInfo); 00760 */ 00761 #define TdiBuildSendDatagram( \ 00762 Irp, DevObj, FileObj, CompRoutine, Contxt, \ 00763 MdlAddr, SendLen, SendDatagramInfo) \ 00764 { \ 00765 PTDI_REQUEST_KERNEL_SENDDG _Request; \ 00766 PIO_STACK_LOCATION _IrpSp; \ 00767 \ 00768 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00769 \ 00770 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00771 Contxt, _IrpSp, TDI_SEND_DATAGRAM); \ 00772 \ 00773 _Request = (PTDI_REQUEST_KERNEL_SENDDG)&_IrpSp->Parameters; \ 00774 _Request->SendDatagramInformation = (SendDatagramInfo); \ 00775 _Request->SendLength = (SendLen); \ 00776 (Irp)->MdlAddress = (MdlAddr); \ 00777 } 00778 00779 /* 00780 * VOID 00781 * TdiBuildSetEventHandler( 00782 * IN PIRP Irp, 00783 * IN PDEVICE_OBJECT DevObj, 00784 * IN PFILE_OBJECT FileObj, 00785 * IN PVOID CompRoutine, 00786 * IN PVOID Contxt, 00787 * IN INT InEventType, 00788 * IN PVOID InEventHandler, 00789 * IN PVOID InEventContext); 00790 */ 00791 #define TdiBuildSetEventHandler( \ 00792 Irp, DevObj, FileObj, CompRoutine, Contxt, \ 00793 InEventType, InEventHandler, InEventContext) \ 00794 { \ 00795 PTDI_REQUEST_KERNEL_SET_EVENT _Request; \ 00796 PIO_STACK_LOCATION _IrpSp; \ 00797 \ 00798 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00799 \ 00800 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00801 Contxt, _IrpSp, TDI_SET_EVENT_HANDLER); \ 00802 \ 00803 _Request = (PTDI_REQUEST_KERNEL_SET_EVENT)&_IrpSp->Parameters; \ 00804 _Request->EventType = (InEventType); \ 00805 _Request->EventHandler = (PVOID)(InEventHandler); \ 00806 _Request->EventContext = (PVOID)(InEventContext); \ 00807 } 00808 00809 /* 00810 * VOID 00811 * TdiBuildSetInformation( 00812 * IN PIRP Irp, 00813 * IN PDEVICE_OBJECT DevObj, 00814 * IN PFILE_OBJECT FileObj, 00815 * IN PVOID CompRoutine, 00816 * IN PVOID Contxt, 00817 * IN UINT SType, 00818 * IN PMDL MdlAddr); 00819 */ 00820 #define TdiBuildSetInformation( \ 00821 Irp, DevObj, FileObj, CompRoutine, Contxt, SType, MdlAddr) \ 00822 { \ 00823 PTDI_REQUEST_KERNEL_SET_INFORMATION _Request; \ 00824 PIO_STACK_LOCATION _IrpSp; \ 00825 \ 00826 _IrpSp = IoGetNextIrpStackLocation(Irp); \ 00827 \ 00828 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ 00829 Contxt, _IrpSp, TDI_SET_INFORMATION); \ 00830 \ 00831 _Request = (PTDI_REQUEST_KERNEL_SET_INFORMATION)&_IrpSp->Parameters; \ 00832 _Request->RequestConnectionInformation = NULL; \ 00833 _Request->SetType = (ULONG)(SType); \ 00834 (Irp)->MdlAddress = (MdlAddr); \ 00835 } 00836 00837 /* TDI20_CLIENT_INTERFACE_INFO.TdiVersion constants */ 00838 #define TDI_CURRENT_MAJOR_VERSION 2 00839 #define TDI_CURRENT_MINOR_VERSION 0 00840 00841 #define TDI_CURRENT_VERSION ((TDI_CURRENT_MINOR_VERSION) << 8 \ 00842 | (TDI_CURRENT_MAJOR_VERSION)) 00843 00844 #define TDI_VERSION_ONE 0x0001 00845 00846 typedef enum _TDI_PNP_OPCODE { 00847 TDI_PNP_OP_MIN, 00848 TDI_PNP_OP_ADD, 00849 TDI_PNP_OP_DEL, 00850 TDI_PNP_OP_UPDATE, 00851 TDI_PNP_OP_PROVIDERREADY, 00852 TDI_PNP_OP_NETREADY, 00853 TDI_PNP_OP_ADD_IGNORE_BINDING, 00854 TDI_PNP_OP_DELETE_IGNORE_BINDING, 00855 TDI_PNP_OP_MAX 00856 } TDI_PNP_OPCODE; 00857 00858 /* TDI_PNP_CONTEXT.ContextType */ 00859 #define TDI_PNP_CONTEXT_TYPE_IF_NAME 0x1 00860 #define TDI_PNP_CONTEXT_TYPE_IF_ADDR 0x2 00861 #define TDI_PNP_CONTEXT_TYPE_PDO 0x3 00862 #define TDI_PNP_CONTEXT_TYPE_FIRST_OR_LAST_IF 0x4 00863 00864 typedef struct _TDI_PNP_CONTEXT { 00865 USHORT ContextSize; 00866 USHORT ContextType; 00867 UCHAR ContextData[1]; 00868 } TDI_PNP_CONTEXT, *PTDI_PNP_CONTEXT; 00869 00870 typedef VOID 00871 (NTAPI *TDI_ADD_ADDRESS_HANDLER)( 00872 IN PTA_ADDRESS Address); 00873 00874 typedef VOID 00875 (NTAPI *TDI_ADD_ADDRESS_HANDLER_V2)( 00876 IN PTA_ADDRESS Address, 00877 IN PUNICODE_STRING DeviceName, 00878 IN PTDI_PNP_CONTEXT Context); 00879 00880 typedef VOID 00881 (NTAPI *TDI_BINDING_HANDLER)( 00882 IN TDI_PNP_OPCODE PnPOpcode, 00883 IN PUNICODE_STRING DeviceName, 00884 IN PWSTR MultiSZBindList); 00885 00886 typedef VOID 00887 (NTAPI *TDI_BIND_HANDLER)( 00888 IN PUNICODE_STRING DeviceName); 00889 00890 typedef VOID 00891 (NTAPI *TDI_DEL_ADDRESS_HANDLER)( 00892 IN PTA_ADDRESS Address); 00893 00894 typedef VOID 00895 (NTAPI *TDI_DEL_ADDRESS_HANDLER_V2)( 00896 IN PTA_ADDRESS Address, 00897 IN PUNICODE_STRING DeviceName, 00898 IN PTDI_PNP_CONTEXT Context); 00899 00900 typedef NTSTATUS 00901 (NTAPI *TDI_PNP_POWER_HANDLER)( 00902 IN PUNICODE_STRING DeviceName, 00903 IN PNET_PNP_EVENT PowerEvent, 00904 IN PTDI_PNP_CONTEXT Context1, 00905 IN PTDI_PNP_CONTEXT Context2); 00906 00907 typedef VOID 00908 (NTAPI *TDI_UNBIND_HANDLER)( 00909 IN PUNICODE_STRING DeviceName); 00910 00911 typedef VOID 00912 (NTAPI *ProviderPnPPowerComplete)( 00913 IN PNET_PNP_EVENT NetEvent, 00914 IN NTSTATUS ProviderStatus); 00915 00916 typedef struct _TDI20_CLIENT_INTERFACE_INFO { 00917 _ANONYMOUS_UNION union { 00918 _ANONYMOUS_STRUCT struct { 00919 UCHAR MajorTdiVersion; 00920 UCHAR MinorTdiVersion; 00921 } DUMMYSTRUCTNAME; 00922 USHORT TdiVersion; 00923 } DUMMYUNIONNAME; 00924 USHORT Unused; 00925 PUNICODE_STRING ClientName; 00926 TDI_PNP_POWER_HANDLER PnPPowerHandler; 00927 _ANONYMOUS_UNION union { 00928 TDI_BINDING_HANDLER BindingHandler; 00929 _ANONYMOUS_STRUCT struct { 00930 TDI_BIND_HANDLER BindHandler; 00931 TDI_UNBIND_HANDLER UnBindHandler; 00932 } DUMMYSTRUCTNAME; 00933 }DUMMYUNIONNAME2; 00934 _ANONYMOUS_UNION union { 00935 _ANONYMOUS_STRUCT struct { 00936 TDI_ADD_ADDRESS_HANDLER_V2 AddAddressHandlerV2; 00937 TDI_DEL_ADDRESS_HANDLER_V2 DelAddressHandlerV2; 00938 } DUMMYSTRUCTNAME; 00939 _ANONYMOUS_STRUCT struct { 00940 TDI_ADD_ADDRESS_HANDLER AddAddressHandler; 00941 TDI_DEL_ADDRESS_HANDLER DelAddressHandler; 00942 } DUMMYSTRUCTNAME2; 00943 } DUMMYUNIONNAME3; 00944 } TDI20_CLIENT_INTERFACE_INFO, *PTDI20_CLIENT_INTERFACE_INFO; 00945 00946 typedef TDI20_CLIENT_INTERFACE_INFO TDI_CLIENT_INTERFACE_INFO; 00947 typedef TDI_CLIENT_INTERFACE_INFO *PTDI_CLIENT_INTERFACE_INFO; 00948 00949 00950 /* TDI functions */ 00951 00952 /* 00953 * VOID 00954 * TdiCompleteRequest( 00955 * IN PIRP Irp, 00956 * IN NTSTATUS Status); 00957 */ 00958 #define TdiCompleteRequest(Irp, Status) \ 00959 { \ 00960 (Irp)->IoStatus.Status = (Status); \ 00961 IoCompleteRequest((Irp), IO_NETWORK_INCREMENT); \ 00962 } 00963 00964 TDIKRNLAPI 00965 NTSTATUS 00966 NTAPI 00967 TdiCopyBufferToMdl( 00968 IN PVOID SourceBuffer, 00969 IN ULONG SourceOffset, 00970 IN ULONG SourceBytesToCopy, 00971 IN PMDL DestinationMdlChain, 00972 IN ULONG DestinationOffset, 00973 IN PULONG BytesCopied); 00974 00975 /* 00976 * VOID 00977 * TdiCopyLookaheadData( 00978 * IN PVOID Destination, 00979 * IN PVOID Source, 00980 * IN ULONG Length, 00981 * IN ULONG ReceiveFlags); 00982 */ 00983 #define TdiCopyLookaheadData(Destination, Source, Length, ReceiveFlags) \ 00984 RtlCopyMemory(Destination, Source, Length) 00985 00986 TDIKRNLAPI 00987 NTSTATUS 00988 NTAPI 00989 TdiCopyMdlChainToMdlChain ( 00990 IN PMDL SourceMdlChain, 00991 IN ULONG SourceOffset, 00992 IN PMDL DestinationMdlChain, 00993 IN ULONG DestinationOffset, 00994 OUT PULONG BytesCopied); 00995 00996 TDIKRNLAPI 00997 NTSTATUS 00998 NTAPI 00999 TdiCopyMdlToBuffer( 01000 IN PMDL SourceMdlChain, 01001 IN ULONG SourceOffset, 01002 IN PVOID DestinationBuffer, 01003 IN ULONG DestinationOffset, 01004 IN ULONG DestinationBufferSize, 01005 OUT PULONG BytesCopied); 01006 01007 TDIKRNLAPI 01008 NTSTATUS 01009 NTAPI 01010 TdiDeregisterAddressChangeHandler( 01011 IN HANDLE BindingHandle); 01012 01013 TDIKRNLAPI 01014 NTSTATUS 01015 NTAPI 01016 TdiDeregisterDeviceObject( 01017 IN HANDLE DevRegistrationHandle); 01018 01019 TDIKRNLAPI 01020 NTSTATUS 01021 NTAPI 01022 TdiDeregisterNetAddress( 01023 IN HANDLE AddrRegistrationHandle); 01024 01025 TDIKRNLAPI 01026 NTSTATUS 01027 NTAPI 01028 TdiDeregisterPnPHandlers( 01029 IN HANDLE BindingHandle); 01030 01031 TDIKRNLAPI 01032 NTSTATUS 01033 NTAPI 01034 TdiDeregisterProvider( 01035 IN HANDLE ProviderHandle); 01036 01037 TDIKRNLAPI 01038 NTSTATUS 01039 NTAPI 01040 TdiEnumerateAddresses( 01041 IN HANDLE BindingHandle); 01042 01043 TDIKRNLAPI 01044 VOID 01045 NTAPI 01046 TdiInitialize( 01047 VOID); 01048 01049 TDIKRNLAPI 01050 VOID 01051 NTAPI 01052 TdiMapBuffer( 01053 IN PMDL MdlChain); 01054 01055 TDIKRNLAPI 01056 NTSTATUS 01057 NTAPI 01058 TdiMapUserRequest( 01059 IN PDEVICE_OBJECT DeviceObject, 01060 IN PIRP Irp, 01061 IN PIO_STACK_LOCATION IrpSp); 01062 01063 TDIKRNLAPI 01064 BOOLEAN 01065 NTAPI 01066 TdiMatchPdoWithChainedReceiveContext( 01067 IN PVOID TsduDescriptor, 01068 IN PVOID PDO); 01069 01070 TDIKRNLAPI 01071 VOID 01072 NTAPI 01073 TdiPnPPowerComplete( 01074 IN HANDLE BindingHandle, 01075 IN PNET_PNP_EVENT PowerEvent, 01076 IN NTSTATUS Status); 01077 01078 TDIKRNLAPI 01079 NTSTATUS 01080 NTAPI 01081 TdiPnPPowerRequest( 01082 IN PUNICODE_STRING DeviceName, 01083 IN PNET_PNP_EVENT PowerEvent, 01084 IN PTDI_PNP_CONTEXT Context1, 01085 IN PTDI_PNP_CONTEXT Context2, 01086 IN ProviderPnPPowerComplete ProtocolCompletionHandler); 01087 01088 TDIKRNLAPI 01089 NTSTATUS 01090 NTAPI 01091 TdiProviderReady( 01092 IN HANDLE ProviderHandle); 01093 01094 TDIKRNLAPI 01095 NTSTATUS 01096 NTAPI 01097 TdiRegisterAddressChangeHandler( 01098 IN TDI_ADD_ADDRESS_HANDLER AddHandler, 01099 IN TDI_DEL_ADDRESS_HANDLER DeleteHandler, 01100 OUT HANDLE *BindingHandle); 01101 01102 TDIKRNLAPI 01103 NTSTATUS 01104 NTAPI 01105 TdiRegisterDeviceObject( 01106 IN PUNICODE_STRING DeviceName, 01107 OUT HANDLE *DevRegistrationHandle); 01108 01109 TDIKRNLAPI 01110 NTSTATUS 01111 NTAPI 01112 TdiRegisterNetAddress( 01113 IN PTA_ADDRESS Address, 01114 IN PUNICODE_STRING DeviceName, 01115 IN PTDI_PNP_CONTEXT Context, 01116 OUT HANDLE *AddrRegistrationHandle); 01117 01118 TDIKRNLAPI 01119 NTSTATUS 01120 NTAPI 01121 TdiRegisterNotificationHandler( 01122 IN TDI_BIND_HANDLER BindHandler, 01123 IN TDI_UNBIND_HANDLER UnbindHandler, 01124 OUT HANDLE *BindingHandle); 01125 01126 TDIKRNLAPI 01127 NTSTATUS 01128 NTAPI 01129 TdiRegisterPnPHandlers( 01130 IN PTDI_CLIENT_INTERFACE_INFO ClientInterfaceInfo, 01131 IN ULONG InterfaceInfoSize, 01132 OUT HANDLE *BindingHandle); 01133 01134 TDIKRNLAPI 01135 NTSTATUS 01136 NTAPI 01137 TdiRegisterProvider( 01138 IN PUNICODE_STRING ProviderName, 01139 OUT HANDLE *ProviderHandle); 01140 01141 TDIKRNLAPI 01142 VOID 01143 NTAPI 01144 TdiReturnChainedReceives( 01145 IN PVOID *TsduDescriptors, 01146 IN ULONG NumberOfTsdus); 01147 01148 TDIKRNLAPI 01149 VOID 01150 NTAPI 01151 TdiUnmapBuffer( 01152 IN PMDL MdlChain); 01153 01154 #ifdef __cplusplus 01155 } 01156 #endif 01157 01158 #endif /* __TDIKRNL_H */ Generated on Fri May 25 2012 04:28:52 for ReactOS by
1.7.6.1
|