59 DPRINT1(
"CUnregisterPhysicalConnection::QueryInterface no interface!!! iface %S\n",
GuidString.Buffer);
83 CUnregisterPhysicalConnection::UnregisterPhysicalConnection(
98 CUnregisterPhysicalConnection::UnregisterPhysicalConnectionToExternal(
113 CUnregisterPhysicalConnection::UnregisterPhysicalConnectionFromExternal(
154 ISubdevice * FromSubDevice =
NULL, *ToSubDevice =
NULL;
160 Status = FromUnknown->QueryInterface(IID_ISubdevice, (
PVOID*)&FromSubDevice);
164 Status = FromSubDevice->GetDescriptor(&FromSubDeviceDescriptor);
181 Status = ToUnknown->QueryInterface(IID_ISubdevice, (
PVOID*)&ToSubDevice);
185 Status = ToSubDevice->GetDescriptor(&ToSubDeviceDescriptor);
189 if (
IsListEmpty(&ToSubDeviceDescriptor->SymbolicLinkList))
201 if (FromSubDeviceDescriptor)
211 if (ToSubDeviceDescriptor)
221 if (FromSubDeviceDescriptor)
233 if (ToSubDeviceDescriptor)
235 ToEntry->FromPin = ToPin;
236 ToEntry->Connection.Pin = FromPin;
238 RtlMoveMemory(&ToEntry->Connection.SymbolicLinkName, FromString->Buffer, FromString->MaximumLength);
239 ToEntry->Connection.SymbolicLinkName[FromString->Length /
sizeof(
WCHAR)] =
UNICODE_NULL;
241 InsertTailList(&ToSubDeviceDescriptor->PhysicalConnectionList, &ToEntry->Entry);
250 FromSubDevice->Release();
253 ToSubDevice->Release();
273 DPRINT(
"PcRegisterPhysicalConnection\n");
NTSTATUS NTAPI PcRegisterPhysicalConnectionFromExternal(IN PDEVICE_OBJECT DeviceObject, IN PUNICODE_STRING FromString, IN ULONG FromPin, IN PUNKNOWN ToUnknown, IN ULONG ToPin)
#define STATUS_INSUFFICIENT_RESOURCES
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
NTSTATUS RegisterConnection(IN OUT PDEVICE_OBJECT DeviceObject, IN PUNKNOWN FromUnknown, IN PUNICODE_STRING FromString, IN ULONG FromPin, IN PUNKNOWN ToUnknown, IN PUNICODE_STRING ToString, IN ULONG ToPin)
#define STATUS_INVALID_PARAMETER
NTSTATUS NTAPI PcRegisterPhysicalConnection(IN PDEVICE_OBJECT DeviceObject, IN PUNKNOWN FromUnknown, IN ULONG FromPin, IN PUNKNOWN ToUnknown, IN ULONG ToPin)
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
virtual ~CUnregisterPhysicalConnection()
#define InsertTailList(ListHead, Entry)
WCHAR SymbolicLinkName[1]
struct SYMBOLICLINK_ENTRY * PSYMBOLICLINK_ENTRY
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
#define RtlMoveMemory(Destination, Source, Length)
#define IsEqualGUIDAligned(guid1, guid2)
CUnregisterPhysicalConnection(IUnknown *OuterUnknown)
_In_ PDEVICE_OBJECT DeviceObject
return STATUS_NOT_IMPLEMENTED
VOID FreeItem(IN PVOID Item)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
_Out_ _Inout_ POEM_STRING DestinationString
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
KSPIN_PHYSICALCONNECTION Connection
IUnregisterPhysicalConnection * PUNREGISTERPHYSICALCONNECTION
struct _LIST_ENTRY * Flink
#define NT_SUCCESS(StatCode)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
struct PHYSICAL_CONNECTION_ENTRY * PPHYSICAL_CONNECTION_ENTRY
#define PC_ASSERT_IRQL_EQUAL(x)
IMP_IUnregisterPhysicalConnection
#define STATUS_UNSUCCESSFUL
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
LIST_ENTRY PhysicalConnectionList
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
NTSTATUS NTAPI PcRegisterPhysicalConnectionToExternal(IN PDEVICE_OBJECT DeviceObject, IN PUNKNOWN FromUnknown, IN ULONG FromPin, IN PUNICODE_STRING ToString, IN ULONG ToPin)
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
UNICODE_STRING SymbolicLink
char * cleanup(char *str)
NTSTATUS NTAPI NewIUnregisterPhysicalConnection(OUT PUNREGISTERPHYSICALCONNECTION *OutConnection)
std::string ToString(XMLHandle node)
static NTSTATUS UnRegisterConnection(IN OUT PDEVICE_OBJECT DeviceObject, IN PUNKNOWN FromUnknown, IN PUNICODE_STRING FromString, IN ULONG FromPin, IN PUNKNOWN ToUnknown, IN PUNICODE_STRING ToString, IN ULONG ToPin)
base of all file and directory entries
LIST_ENTRY SymbolicLinkList