Length = wcslen(IID);
- TotalSize = (Length * sizeof(WCHAR)) + BufferSize + 2 * sizeof(WCHAR);
+ TotalSize = (Length * sizeof(WCHAR)) + BufferSize + 4 * sizeof(WCHAR);
pStr = HeapAlloc(GetProcessHeap(), 0, TotalSize);
if (!pStr)
return STATUS_INSUFFICIENT_RESOURCES;
-
- wcscpy(pStr, (LPWSTR)IID);
- pStr[Length] = L'\\';
- memcpy(&pStr[Length+1], Buffer, BufferSize);
- pStr[Length+1+BufferSize] = L'\0';
+ pStr[0] = L'\\';
+ wcscpy(&pStr[1], (LPWSTR)IID);
+ pStr[Length+1] = L'\\';
+ memcpy(&pStr[Length+2], Buffer, BufferSize);
+ pStr[Length+3+(BufferSize/sizeof(WCHAR))] = L'\0';
RtlInitUnicodeString(&ObjectName, pStr);
+ ObjectName.Length = ObjectName.MaximumLength = TotalSize;
InitializeObjectAttributes(&ObjectAttributes, &ObjectName, OBJ_CASE_INSENSITIVE, hHandle, NULL);
*
*--*/
KSDDKAPI
-NTSTATUS
+DWORD
NTAPI
KsCreateAllocator(HANDLE ConnectionHandle,
PKSALLOCATOR_FRAMING AllocatorFraming,
*
*--*/
KSDDKAPI
-NTSTATUS
+DWORD
NTAPI
KsCreateClock(HANDLE ConnectionHandle,
PKSCLOCK_CREATE ClockCreate,
*--*/
KSDDKAPI
-NTSTATUS
+DWORD
NTAPI
KsCreatePin(HANDLE FilterHandle,
PKSPIN_CONNECT Connect,
PHANDLE ConnectionHandle)
{
ULONG BufferSize = sizeof(KSPIN_CONNECT);
- PKSDATAFORMAT DataFormat = ((PKSDATAFORMAT) ( ((ULONG)Connect) + ((ULONG)sizeof(KSPIN_CONNECT)) ) );
+ PKSDATAFORMAT DataFormat = ((PKSDATAFORMAT) ((ULONG_PTR)Connect + sizeof(KSPIN_CONNECT)));
- if (DataFormat->Flags & KSDATAFORMAT_ATTRIBUTES)
- {
- BufferSize += (ROUND_UP(DataFormat->FormatSize,sizeof(LONGLONG)) + DataFormat->FormatSize);
- }
+ BufferSize += DataFormat->FormatSize;
return KsiCreateObjectType(FilterHandle,
KSSTRING_Pin,
*
*--*/
KSDDKAPI
-NTSTATUS
+DWORD
NTAPI
KsCreateTopologyNode(HANDLE ParentHandle,
PKSNODE_CREATE NodeCreate,