// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package windows

import "syscall"

// NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING.
type NTUnicodeString struct {
	Length        uint16
	MaximumLength uint16
	Buffer        *uint16
}

// NewNTUnicodeString returns a new NTUnicodeString structure for use with native
// NT APIs that work over the NTUnicodeString type. Note that most Windows APIs
// do not use NTUnicodeString, and instead UTF16PtrFromString should be used for
// the more common *uint16 string type.
func NewNTUnicodeString(s string) (*NTUnicodeString, error) {
	s16, err := syscall.UTF16FromString(s)
	if err != nil {
		return nil, err
	}
	n := len(s16) * 2
	if n > (1<<16)-1 {
		return nil, syscall.EINVAL
	}
	// https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdmsec/nf-wdmsec-wdmlibrtlinitunicodestringex
	return &NTUnicodeString{
		Length:        uint16(n) - 2, // subtract 2 bytes for the NUL terminator
		MaximumLength: uint16(n),
		Buffer:        &s16[0],
	}, nil
}
