NULL);
}
- AFD_DbgPrint(MIN_TRACE, ("Status (0x%X) Iosb.Status (0x%X).\n", Status, IoStatusBlock->Status));
+ AFD_DbgPrint(MAX_TRACE, ("Status (0x%X) Iosb.Status (0x%X).\n", Status, IoStatusBlock->Status));
return IoStatusBlock->Status;
}
EaInfo, /* EA buffer */
EaLength); /* EA length */
if (NT_SUCCESS(Status)) {
- Status = ObReferenceObjectByHandle(*Handle, /* Handle to open file */
- GENERIC_READ | GENERIC_WRITE, /* Access mode */
- NULL, /* Object type */
- KernelMode, /* Access mode */
- (PVOID*)Object, /* Pointer to object */
- NULL); /* Handle information */
+ Status = ObReferenceObjectByHandle(*Handle, /* Handle to open file */
+ GENERIC_READ | GENERIC_WRITE, /* Access mode */
+ NULL, /* Object type */
+ KernelMode, /* Access mode */
+ (PVOID*)Object, /* Pointer to object */
+ NULL); /* Handle information */
if (!NT_SUCCESS(Status)) {
- AFD_DbgPrint(MIN_TRACE, ("ObReferenceObjectByHandle() failed with status (0x%X).\n", Status));
+ AFD_DbgPrint(MIN_TRACE, ("ObReferenceObjectByHandle() failed with status (0x%X).\n", Status));
ZwClose(*Handle);
+ } else {
+ AFD_DbgPrint(MAX_TRACE, ("Got handle (0x%X) Object (0x%X)\n",
+ *Handle, *Object));
}
} else {
AFD_DbgPrint(MIN_TRACE, ("ZwCreateFile() failed with status (0x%X)\n", Status));
AFD_DbgPrint(MAX_TRACE, ("Called. Handle (0x%X) FileObject (0x%X)\n",
Handle, FileObject));
- if (FileObject)
- ObDereferenceObject(FileObject);
-
if (Handle)
ZwClose(Handle);
+ if (FileObject)
+ ObDereferenceObject(FileObject);
+
return STATUS_SUCCESS;
}
TDI_TRANSPORT_ADDRESS_LENGTH +
sizeof(TA_ADDRESS_IP);
EaInfo = (PFILE_FULL_EA_INFORMATION)ExAllocatePool(NonPagedPool, EaLength);
- if (!EaInfo) {
- AFD_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
+ if (!EaInfo)
return STATUS_INSUFFICIENT_RESOURCES;
- }
RtlZeroMemory(EaInfo, EaLength);
EaInfo->EaNameLength = TDI_TRANSPORT_ADDRESS_LENGTH;
switch (Name->sa_family) {
case AF_INET:
- Status = TdiOpenAddressFileIPv4(DeviceName, Name, AddressHandle, AddressObject);
+ Status = TdiOpenAddressFileIPv4(
+ DeviceName,
+ Name,
+ AddressHandle,
+ AddressObject);
break;
default:
Status = STATUS_INVALID_PARAMETER;
AFD_DbgPrint(MAX_TRACE, ("Called\n"));
+ assert(FileObject);
+
DeviceObject = IoGetRelatedDeviceObject(FileObject);
Irp = TdiBuildInternalDeviceControlIrp(TDI_SET_EVENT_HANDLER, /* Sub function */
}
#endif
-CP
BaseAddress = MmMapLockedPages(Mdl, KernelMode);
AFD_DbgPrint(MAX_TRACE, ("Mapped user mode buffer at 0x%X.\n", BaseAddress));
-CP
TdiBuildSendDatagram(Irp, /* I/O Request Packet */
DeviceObject, /* Device object */
TransportObject, /* File object */
ConnectInfo); /* Connection information */
Status = TdiCall(Irp, DeviceObject, &Iosb, FALSE, NULL);
-CP
+
MmUnmapLockedPages(BaseAddress, Mdl);
-CP
+
MmUnlockPages(Mdl);
-CP
+
IoFreeMdl(Mdl);
-CP
+
ExFreePool(ConnectInfo);
return Status;
NTSTATUS Status;
PIRP Irp;
-CP
-
DeviceObject = IoGetRelatedDeviceObject(TransportObject);
if (!DeviceObject) {
AFD_DbgPrint(MIN_TRACE, ("Bad device object.\n"));
return STATUS_INVALID_PARAMETER;
}
-CP
- TdiAddressSize = TdiAddressSizeFromName(Address);
- AFD_DbgPrint(MIN_TRACE, ("TdiAddressSize %d.\n", TdiAddressSize));
+ TdiAddressSize = TdiAddressSizeFromName(Address);
-CP
ConnectInfo = (PTDI_CONNECTION_INFORMATION)
ExAllocatePool(NonPagedPool,
sizeof(TDI_CONNECTION_INFORMATION) +
TdiAddressSize);
-
- AFD_DbgPrint(MIN_TRACE, ("ConnectInfo 0x%X.\n", ConnectInfo));
-
-CP
- if (!ConnectInfo) {
- AFD_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
+ if (!ConnectInfo)
return STATUS_INSUFFICIENT_RESOURCES;
- }
-CP
+
RtlZeroMemory(ConnectInfo,
sizeof(TDI_CONNECTION_INFORMATION) +
TdiAddressSize);
ConnectInfo->RemoteAddressLength = TdiAddressSize;
ConnectInfo->RemoteAddress = (PVOID)
(ConnectInfo + sizeof(TDI_CONNECTION_INFORMATION));
-CP
+
TdiBuildAddress(ConnectInfo->RemoteAddress, Address);
-CP
+
Irp = TdiBuildInternalDeviceControlIrp(TDI_SEND_DATAGRAM, /* Sub function */
DeviceObject, /* Device object */
TransportObject, /* File object */
NULL, /* Event */
NULL); /* Return buffer */
-CP
if (!Irp) {
AFD_DbgPrint(MIN_TRACE, ("TdiBuildInternalDeviceControlIrp() failed.\n"));
ExFreePool(ConnectInfo);
}
#endif
#endif
-CP
TdiBuildSendDatagram(Irp, /* I/O Request Packet */
DeviceObject, /* Device object */
Mdl, /* Descriptor for data buffer */
BufferSize, /* Size of data to send */
ConnectInfo); /* Connection information */
-CP
+
Status = TdiCall(Irp, DeviceObject, &Iosb, FALSE, NULL);
-CP
+
#if 0
MmUnlockPages(Mdl);
-CP
+
IoFreeMdl(Mdl);
#endif
-CP
+
ExFreePool(ConnectInfo);
-CP
+
return Status;
}
*BufferSize = Iosb.Information;
TdiBuildName(Address, ReturnInfo->RemoteAddress);
}
-CP
+
MmUnlockPages(Mdl);
-CP
+
IoFreeMdl(Mdl);
-CP
+
ExFreePool(ReceiveInfo);
return Status;