62 if (Option && OptionLength)
88 if (!OptionName || (OptNameLength == 0) || !*OptionName)
99 if ((OptLength >= OptNameLength) &&
100 (
_strnicmp(Option, OptionName, OptNameLength) == 0))
102 if ((OptLength == OptNameLength) ||
103 (OptionName[OptNameLength-1] ==
'=') ||
104 (OptionName[OptNameLength-1] ==
':'))
111 if (Option && OptionLength)
112 *OptionLength = OptLength;
155 if (!NewOptions || !*NewOptions)
164 if (OptionsLength != 0 &&
165 (
Options[OptionsLength-1] !=
' ') &&
166 (
Options[OptionsLength-1] !=
'\t') &&
167 (*NewOptions !=
'\0') &&
168 (*NewOptions !=
' ') &&
169 (*NewOptions !=
'\t'))
184 if (NewOptsLength != 0 &&
185 (NewOptions[NewOptsLength-1] !=
' ') &&
186 (NewOptions[NewOptsLength-1] !=
'\t') &&
201 OptionsLength =
min(OptionsLength,
BufferSize - NewOptsLength);
204 OptionsLength *
sizeof(
CHAR));
206 (
Options + NewOptsLength)[OptionsLength-1] =
'\0';
251 PCSTR NextOptions, NextOpt;
261 for (; OptionsToRemove && *OptionsToRemove; ++OptionsToRemove)
263 NextOptions = *OptionsToRemove;
275 if ((OptionLength >= NextOptLength) &&
276 (
_strnicmp(Option, NextOpt, NextOptLength) == 0))
278 if ((OptionLength == NextOptLength) ||
279 (NextOpt[NextOptLength-1] ==
'=') ||
280 (NextOpt[NextOptLength-1] ==
':'))
283 while ((Option > LoadOptions) &&
284 (Option[-1] ==
'/' ||
293 if ((Option > LoadOptions) &&
294 (Option[-1] !=
' ') &&
295 (Option[-1] !=
'\t') &&
320 for (; OptionsToAdd && *OptionsToAdd; ++OptionsToAdd)
static void AddSeparator(HWND hwndToolBar)
#define _strnicmp(_String1, _String2, _MaxCount)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP size_t __cdecl strcspn(const char *, const char *)
_ACRTIMP size_t __cdecl strspn(const char *, const char *)
static char * NextOption(const char *const ostr)
#define _Inout_updates_z_(s)
_In_ ULONG _In_ ULONG _In_ ULONG Length
PCSTR NtLdrGetOptionEx(_In_ PCSTR Options, _In_ PCSTR OptionName, _Out_opt_ PULONG OptionLength)
PCSTR NtLdrGetNextOption(_Inout_ PCSTR *Options, _Out_opt_ PULONG OptionLength)
VOID NtLdrUpdateOptions(_Inout_updates_z_(BufferSize) PSTR LoadOptions, _In_ ULONG BufferSize, _In_ BOOLEAN Append, _In_opt_ PCSTR OptionsToAdd[], _In_opt_ PCSTR OptionsToRemove[])
Updates the options in the buffer pointed by LoadOptions, of maximum size BufferSize,...
VOID NtLdrAddOptions(_Inout_updates_z_(BufferSize) PSTR Options, _In_ ULONG BufferSize, _In_ BOOLEAN Append, _In_opt_ PCSTR NewOptions)
Appends or prepends new options to the ones originally contained in the buffer pointed by Options,...
PCSTR NtLdrGetOptionExN(_In_ PCSTR Options, _In_reads_(OptNameLength) PCCH OptionName, _In_ ULONG OptNameLength, _Out_opt_ PULONG OptionLength)
PCSTR NtLdrGetOption(_In_ PCSTR Options, _In_ PCSTR OptionName)
NTSTRSAFEAPI RtlStringCbCatA(_Inout_updates_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCSTR pszSrc)
#define RtlMoveMemory(Destination, Source, Length)
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize