ReactOS 0.4.16-dev-2206-gc56950d
fontpidl.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Font Shell Extension
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: pidl handling
5 * COPYRIGHT: Copyright 2019,2020 Mark Jansen <mark.jansen@reactos.org>
6 */
7
8#include "precomp.h"
9
11{
12 // Because the FontPidlEntry contains one WCHAR, we do not need to take the null terminator into account
13 size_t cbData = sizeof(FontPidlEntry) + wcslen(lpString) * sizeof(WCHAR);
15 if (!pidl)
16 return NULL;
17
18 ZeroMemory(pidl, cbData + sizeof(WORD));
19
20 pidl->cb = (WORD)cbData;
21 pidl->Magic = 'fp';
22 wcscpy(pidl->Name, lpString);
23 // Should be zero already, but make sure it is
24 *(WORD*)((char*)pidl + cbData) = 0;
25
26 return (LPITEMIDLIST)pidl;
27}
28
30{
31 const FontPidlEntry* fontEntry = (const FontPidlEntry*)pidl;
32 if (fontEntry->Magic == 'fp')
33 return fontEntry;
34 return NULL;
35}
#define NULL
Definition: types.h:112
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2983
unsigned short WORD
Definition: ntddk_ex.h:93
LPITEMIDLIST _ILCreate(LPCWSTR lpString)
Definition: fontpidl.cpp:10
const FontPidlEntry * _FontFromIL(LPCITEMIDLIST pidl)
Definition: fontpidl.cpp:29
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
#define ZeroMemory
Definition: minwinbase.h:31
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
Definition: shlwapi.h:761
wcscpy
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
WCHAR Name[1]
Definition: fontpidl.hpp:15
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
__wchar_t WCHAR
Definition: xmlstorage.h:180